• IComparable接口实现自定义类型的排序


    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;
        }
    }
    复制代码

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

  • 相关阅读:
    Nuget 多平台多目标快速自动打包
    .Net Core 环境下构建强大且易用的规则引擎
    .Net 4.X 提前用上 .Net Core 的配置模式以及热重载配置
    [搬运] DotNetAnywhere:可供选择的 .NET 运行时
    [搬运] .NET Core 2.1中改进的堆栈信息
    [开源]OSharpNS 步步为营系列
    [开源]OSharpNS 步步为营系列
    [开源]OSharpNS 步步为营系列
    [开源]OSharpNS 步步为营系列
    [开源]OSharpNS 步步为营系列
  • 原文地址:https://www.cnblogs.com/jameslif/p/3227459.html
Copyright © 2020-2023  润新知