• 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;
        }
    }

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

  • 相关阅读:
    [CF864F]Cities Excursions
    [AGC012F]Prefix Median
    [TC-FindingFriends]Finding Friends
    [TC-HouseProtection]House Protection
    [CTSC2018]假面
    [CF877F]Ann and Books
    [CF509F]Progress Monitoring
    [CF735E/736C]Ostap and Tree
    CF611H New Year and Forgotten Tree
    CF538H Summer Dichotomy
  • 原文地址:https://www.cnblogs.com/g1mist/p/3050148.html
Copyright © 2020-2023  润新知