当前位置:
首页 > Python基础教程 >
-
C#教程之【转载】C#中自定义Sort的排序规则IComp
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; } public string Name { get; set; } public int Age { get; set; } public int CompareTo(object obj) //实现该比较方法即可 { if (obj is Person) { Person p = obj as Person; return this.Age.CompareTo(p.Age); } else { throw new 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
扩展阅读:目前国内主流的云服务器厂商有哪些_IT技术小趣屋。
备注:原文转载自C#中自定义Sort的排序规则IComparable接口_IT技术小趣屋。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式