【转载】C#中自定义Sort的排序规则IComparable接口
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【转载】C#中自定义Sort的排序规则IComparable接口,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1379字,纯文字阅读大概需要2分钟。
内容图文
![【转载】C#中自定义Sort的排序规则IComparable接口](/upload/InfoBanner/zyjiaocheng/1060/f36a9c7d52a948ccbf2828475bdbdca5.jpg)
C#中的List集合在排序的时候,如果不使用Lambda表达式进行排序的话,一般调用Sort()方法进行排序,如果希望Sort()方法排序后的结果跟我们预想的效果一致或者按照我们自定义的规则排序,则需要将对应的实体继承IComparable接口来实现。
MSDN上给IComparable接口的定义为:定义由值类型或类实现的特定于类型的通用比较方法,旨在对其实例进行排序,使自建类的数组可以使用Array. Sort方法进行排序。自建类继承IComparable接口后,必须实现CompareTo方法,该方法参数是一个T类型的对象,返回值必须是-1,0,1中之一。
下面以一个例子来讲解这个自定义排序,我们定义一个Person人员类,该类包含Name和Age两个属性,要求在数组中调用Sort()方法排序的时候,按年龄Age属性从小到大排序,相应的实现如下代码所示:
class Person : IComparable { public Person(string name, int age) { Name = name; Age = age; } publicstring Name { get; set; } publicint Age { get; set; } publicint CompareTo(object obj) //实现该比较方法即可 { if (obj is Person) { Person p = obj as Person; returnthis.Age.CompareTo(p.Age); } else { thrownew ArgumentException("Object to compare to is not a Person object"); } } }
然后我们写个控制台程序测试下上述的排序结果,测试程序如下:
static void Main(string[] args) { List<Person> personlist = new List<Person>(); personlist.Add(new Person("马六",89)); personlist.Add(new Person("张三",33)); personlist.Add(new Person("李四",3)); personlist.Add(new Person("王五", 244)); personlist.Sort(); foreach(Person p in personlist) { Console.Write("姓名:"+p.Name+" 年龄:"+p.Age); Console.Write("\n"); } Console.ReadKey(); }
运行之后,我们查看下输出的结果信息,完美的达到了我们预期的效果,输出的结果如下:
姓名:李四 年龄:3 姓名:张三 年龄:33 姓名:马六 年龄:89 姓名:王五 年龄:244
备注:原文转载自C#中自定义Sort的排序规则IComparable接口_IT技术小趣屋。
原文:https://www.cnblogs.com/xu-yi/p/10623679.html
内容总结
以上是互联网集市为您收集整理的【转载】C#中自定义Sort的排序规则IComparable接口全部内容,希望文章能够帮你解决【转载】C#中自定义Sort的排序规则IComparable接口所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。