zoukankan      html  css  js  c++  java
  • IComparable接口实现自定义类型的排序

    CompareTo(Object) 方法的实现必须返回有三个值之一
    如下表中所示。
    返回值参数比较
    大于0 x>y
    等于0 x=y
    小于0 x<y
    首先定义一个用于测试的Person类
     
     class person : IComparable
        {
            public string Name { set; get; }
            public int Age { set; get; }
    
            public override string ToString()
            {
                return "name: " + this.Name + "  " + "age: " + this.Age;
            }
        }
    接着使用第一种方法:CompareTo(Object) 方法来实现IComparable接口
    public int CompareTo(object obj)
    {
        person s = obj as person;
    
        return this.Age.CompareTo(s.Age);
    }
    接着,进行第一次排序测试
    class Program
        {
            static void Main(string[] args)
            {
                person[] ps = new person[] { new person() { Name = "gaoning", Age = 21 }, new person() { Name = "laohuan", Age = 20 }, new person() { Name = "lihong", Age = 22 }, new person() { Name = "qinqi", Age = 19 } };
    
                Array.Sort(ps);
    
                foreach (var item in ps)
                {
                    Console.WriteLine(item.ToString());
                }
                Console.ReadKey();
            }
        }

    得出的结果:

    可见,我们已经实现了自定义类型的排序。

    咱们用另外一种写法来实现
     
    public int CompareTo(object obj)
    {
        person s = obj as person;
    
        if (s.Age > this.Age)
        {
             return 1;
        }
        else if (s.Age == this.Age)
        {
             return 0;
        }
        else
        {
            return -1;
        }
    }

    测试完后的效果和第一次的一样,就不发了。
    这样,我们就简单的实现了自定义类型的排序。这只是我初步学习的结果,如果有什么不足或者错误的地方,恳请各位指出。

  • 相关阅读:
    自定义TypeConverter把基础类型转换为复杂类型
    自学MVC看这里——全网最全ASP.NET MVC 教程汇总
    C#枚举器接口IEnumerator的实现
    nopCommerce架构分析系列(二)数据Cache
    NET下三种缓存机制(Winform里面的缓存使用 )
    【RequireJS--API学习笔记】
    Linux文件的所有权与权限
    ftp服务及其实现之vsftpd
    计算机传输层端口分类
    命令:tr
  • 原文地址:https://www.cnblogs.com/g1mist/p/3050148.html
Copyright © 2011-2022 走看看