c#中List<>类的Sort()的几种形式

来源:互联网 发布:全网通手机淘宝 编辑:程序博客网 时间:2024/05/16 09:28
.Net中的List<>类的Sort方法有四种重载形式
1.不带有任何参数的Sort方法----Sort();

2.带有比较器参数的Sort方法 ----Sort(IComparer<T>)

3.带有比较代理方法参数的Sort方法----Sort(Comparison<(Of <(T>)>))

4.带有比较起参数,可以指定排序范围的Sort方法----Sort(Int32, Int32 IComparer(T))


较为常见的一种:

List.Sort((a,b)=>{a.CompareTo(b)});

就是上述List<>类的第三种形式,参数里提供了比较代理方法,其中比较代理方法用lamda表达式。


不带有任何参数的Sort方法----Sort():

使用这种方法不是对List中的任何元素对象都可以进行排序,List中的元素对象必须继承IComparable接口,并且要实现IComparable接口中的CompareTo()方法,在CompareTo()方法中要自己实现对象的比较规则。


带有比较器参数的Sort方法 ----Sort(IComparer<T>):

List中的元素对象不需要继承IComparable接口,但需要额外创建一个对象的比较器,必须继承IComparer<T>接口,并且实现接口中的Compare()方法。


③带有比较代理方法参数的Sort方法----Sort(Comparison<(Of <(T>)>)):

此方法需要编写一个对象排序比较的方法,对List中的元素对象没有特殊的要求,但在比较方法中需要实现对象比较规则,这个方法实现后,就可以把这方名字作为参数委托给List的Sort方法,Sort方法在排序时会执行这个方法对List中的对象进行比较。

如:List.Sort((a,b)=>{a.CompareTo(b)});



④带有比较起参数,可以指定排序范围的Sort方法----Sort(Int32, Int32 IComparer(T)):

此方法实际是第二种比较器排序的一个扩展,在指定排序比较器的同时,指定排序范围,即List中准备排序的开始元素索引和结束元素索引。

0 0
原创粉丝点击