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