日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#sort升序还是降序_c# List的sort排序方法详解

發布時間:2024/1/23 C# 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c#sort升序还是降序_c# List的sort排序方法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

諸如List&ltT&gt等泛型集合類,直接提供了sort()方法用于將集合中的元素進行排序。

但是,其前提是集合中存放的是可直接排序的基本類型,如List&ltint&gt, List&ltdouble&gt,如果

我們定義了一個自定義類型 Class MyClass,并創建一個自定義類型的集合如List&ltMyClass&gt,

那么無參的sort()方法就不可用了,因為不知道如何排序了。這時就需要借助:

IComparer 和 IComparable

首先,我們來看一下c#泛型List提供的Sort方法:

泛型List類的Sort方法有四種形式,分別是

1,不帶有任何參數的Sort方法----Sort();

2,帶有比較器參數的Sort方法 ----Sort(IComparer&ltT&gt)

3,帶有比較代理方法參數的Sort方法----Sort(Comparison&lt(Of &lt(T&gt)&gt))

4,帶有比較器參數,可以指定排序范圍的Sort方法----Sort(Int32, Int32 IComparer(T))

【解析:】第一種方法

使用這種方法不是對List中的任何元素對象都可以進行排序,List中的元素對象必須繼承IComparable接口,并且要實現IComparable接口中的CompareTo()方法,在CompareTo()方法中要自己實現對象的比較規則。

例如,Int32和Double都是實現了IComparable接口并重載了CompareTo方法的結構。(注:int和double都是Int32和Double的別名(alias))

【解析:】第二種方法

2,帶有比較器參數的Sort方法 ----Sort(IComparer&ltT&gt),

1)創建一個額外的比較器類:其實就相當于將排序功能中的比較操作,留個使用者來完成。這個比較操作必須在實現了IComparer接口的自定義比較類中完成;如:

class myComparer:IComparer&ltMyClass&gt

2)制定比較規則實現比較方法:因為接口中有一個用于比較的重載函數Compare,所在在比較器類中我們必須實現它,完成自己希望的比較。所謂自己希望的比較就是說自己實現自定義對象的比較規則,例如你知道自定義類MyClass中哪個屬性適合用來排序,那么就選擇這個屬性作為整個自定義類對象的排序屬性,如該類中有年齡,學號,入學日期等屬性,你可以選擇年齡屬性作為排序屬性。如:

public class myComparer:IComparer&ltMyClass&gt

{

//實現按年齡升序排列

public int Compare(MyClass x, MyClass y)

{

return (x.age.CompareTo(y.age)); //age代表年齡屬性是整型,即其已支持CompareTo方法

}

}

3)使用比較器的排序方法調用:然后,在自定義類型的集合如List&ltMyClass&gt myList,上就可以進行sort排序了,如

myList.Sort(new myComparer());

【解析:】第三種方法

3,帶有比較代理方法參數的Sort方法----Sort(Comparison&lt(Of &lt(T&gt)&gt))

Comparison&lt(Of &lt(T&gt)&gt是一種泛型委托。所以,需要編寫一個對象排序比較的方法,對List中的元素對象沒有特殊的要求,但在比

總結

以上是生活随笔為你收集整理的c#sort升序还是降序_c# List的sort排序方法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。