c#集合元素的排序IComparable,IComparer,Comparison(2021-3-28)

c#集合类常常需要排序,集合类的Sort方法为常用方法,该方法有多个重载。
(1)public interface IComparable
{
int CompareTo(T other);
}
当泛型集合元素的类型是实现 IComparable接口的类时(T为该类类型,该类实现了int CompareTo(T other)方法),则该集合直接调用Sort()方法可以进行排序,排序的顺序由类中实现的int CompareTo(T other)方法决定。
在这里插入图片描述

运行结果为:
在这里插入图片描述
注意:如果类本身的属性值大于CompareTo方法参数的属性值返回1则从小到大排序,否则从大到小排序。
例如修改代码,运行结果发生改变:
在这里插入图片描述
(2)IComparer接口
public interface IComparer
{
int Compare(T x,T y);
}
void Sort(IComparer comparison);
当泛型集合的元素的类型作为IComparer的T且定义了实现了IComparer的类时,实现的类为一个比较器,new一个比较器的对象传给Sort()作为参数即可对集合进行排序。
在这里插入图片描述

(3)Comparison委托
delegate int Comparison(T x, T y);
void Sort(Comparison comparison);
直接调用泛型集合的Sort()方法,该方法的参数为Lambda表达式,Lambda表达式中参数的类型Sort()方法会根据泛型集合元素的类型自动识别。
在这里插入图片描述
运行结果为:
在这里插入图片描述

注意:在c#中,CompareTo()是字符串比较的函数。用法:
string s1 = “c”;
string s2 = “b”;
三个返回值:当s1>s2时,s1.CompareTo(s2)值为1
当s1=s2时,s1.CompareTo(s2)值为0
当s1<s2时,s1.CompareTo(s2)值为-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值