• 自定义比较器(IComparer接口的实现)


     class FileNameSort : IComparer
        {
            [System.Runtime.InteropServices.DllImport("Shlwapi.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
            private static extern int StrCmpLogicalW(string param1,string param2);
            //前后文件名进行比较
            public int Compare(object x, object y)
            {
                if (x == null && y == null) return 0;
                if (x == null) return -1;
                if (y == null) return 1;
                return StrCmpLogicalW(x.ToString(), y.ToString());
            }
            
        }

    使用代码:

             /// <summary>
            /// 按照名字排序,用自定义比较器排序
            /// </summary>
            /// <param name="path"></param>
            /// <returns></returns>
            public static FileInfo[] GetAllFilesBySort(string path)
            {
                FileInfo[] files=null;
                DirectoryInfo folder = new DirectoryInfo(path);
                if (folder.Exists)
                {
                    files = folder.GetFiles();
                    // 文件名的升序  
                    Array.Sort(files, new FileNameSort());
                }
                return files;
            }
            //
            // 摘要:
            //     比较两个对象并返回指示一个是否小于、 等于还是大于另一个值。
            //
            // 参数:
            //   x:
            //     要比较的第一个对象。
            //
            //   y:
            //     要比较的第二个对象。
            //
            // 返回结果:
            //     一个有符号整数,指示 x 和 y 的相对值,如下表所示。值 含义 小于零 x 小于 y。零 x 等于 y。大于零 x 大于 y。
            //
            // 异常:
            //   T:System.ArgumentException:
            //     既不 x ,也不 y 实现 System.IComparable 接口。- 或 - x 和 y 的类型不同,既没有一个可以处理与其他的比较。
            int Compare(object x, object y);
  • 相关阅读:
    VS远程调试亲历
    IIS7.5 配置虚拟目录的经历
    IE 兼容一问题一小记
    寻找 IBatisNet 批量插入(批量复制) 的心路历程
    Linq 多连接及 left join 实例 记录
    easyui treegrid idField 所在属性中值有花括号(如Guid)当有鼠标事件时会报错,行记录一下
    HDU1754
    HDU1166
    线段树模板
    HDU1599(Floyd最小环)
  • 原文地址:https://www.cnblogs.com/xianyuxihuamao/p/7909096.html
Copyright © 2020-2023  润新知