麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C# 實(shí)現(xiàn)List實(shí)例中實(shí)例元素的排序

2019-11-11 05:15:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C# 實(shí)現(xiàn)List實(shí)例中實(shí)例元素的排序

實(shí)現(xiàn)List實(shí)例中元素的排序除了有一下兩種較好的實(shí)現(xiàn)途徑:

使需要排序的類實(shí)現(xiàn)IComparable<T>接口;創(chuàng)建需要排序的類的一個(gè)實(shí)現(xiàn)ICompare<T>接口的新類,將新類的實(shí)例傳入到List.Sort(newOject)方法中。

代碼示例:

實(shí)現(xiàn)IComparable接口方式using System;using System.Collections.Generic;namespace 鴨子{ internal class PRogram { private static void Main() { var ducks = new List<Duck>() { new Duck(){Kind = KindOfDuck.Musovy,Size = 17}, new Duck(){Kind = KindOfDuck.Musovy,Size = 18}, new Duck(){Kind = KindOfDuck.Decoy,Size = 14}, new Duck(){Kind = KindOfDuck.Musovy,Size = 11}, new Duck(){Kind = KindOfDuck.Mallard,Size = 14}, new Duck(){Kind = KindOfDuck.Decoy,Size = 13}, }; ducks.Sort();//鴨子排序 foreach (var duck in ducks) { Console.WriteLine(duck.Kind + " " + duck.Size); } Console.ReadKey(); } } internal class Duck : IComparable<Duck>//鴨子類實(shí)現(xiàn)IComparable<T>接口,實(shí)現(xiàn)排序功能 { public int Size; public KindOfDuck Kind; public int CompareTo(Duck other) { if (this.Size > other.Size) { return 1; } if (this.Size < other.Size) { return -1; } return 0; } } internal enum KindOfDuck { Mallard, Musovy, Decoy, }}實(shí)現(xiàn)ICompare接口方式using System;using System.Collections.Generic;namespace 鴨子1{ internal class Program { private static void Main() { var ducks = new List<Duck>() { new Duck(){Kind = KindOfDuck.Musovy,Size = 17}, new Duck(){Kind = KindOfDuck.Musovy,Size = 18}, new Duck(){Kind = KindOfDuck.Decoy,Size = 14}, new Duck(){Kind = KindOfDuck.Musovy,Size = 11}, new Duck(){Kind = KindOfDuck.Mallard,Size = 14}, new Duck(){Kind = KindOfDuck.Decoy,Size = 13}, }; //var compare=new DuckCompare(){SortBy = SortCriteria.SizeThenKind};//先大小后種類排序 var compare = new DuckCompare() { SortBy = SortCriteria.KindThenSize };//先種類后大小排序 ducks.Sort(compare);//鴨子排序 foreach (var duck in ducks) { Console.WriteLine(duck.Kind + " " + duck.Size); } Console.ReadKey(); } } internal class Duck { public int Size; public KindOfDuck Kind; } internal enum KindOfDuck { Mallard, Musovy, Decoy, } internal enum SortCriteria { SizeThenKind, KindThenSize, } internal class DuckCompare : IComparer<Duck>//新的鴨子類實(shí)現(xiàn)ICompare<T>接口,實(shí)現(xiàn)排序功能 { public SortCriteria SortBy=SortCriteria.SizeThenKind; public int Compare(Duck x, Duck y) { if (SortBy==SortCriteria.SizeThenKind) { if (x.Size>y.Size) { return 1; } if (x.Size<y.Size) { return -1; } if (x.Kind>y.Kind) { return 1; } if (x.Kind<y.Kind) { return -1; } return 0; } if (x.Kind > y.Kind) { return 1; } if (x.Kind < y.Kind) { return -1; } if (x.Size > y.Size) { return 1; } if (x.Size < y.Size) { return -1; } return 0; } }}

兩種方式對(duì)比

IComparable<T>接口方式屬于內(nèi)嵌方式,要提前設(shè)計(jì)好,使用起來(lái)簡(jiǎn)單一點(diǎn),靈活性就差了一點(diǎn);ICompare<T>接口方式剛好相反,需要根據(jù)排序創(chuàng)建新的類,但是更加靈活,不用改變現(xiàn)有的沒(méi)有排序功能的類,而且能實(shí)現(xiàn)復(fù)雜排序。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产成年人视频 | 人禽l交免费视频观看 视频 | 8x成人在线电影 | www.777含羞草 | 一级黄色电影网站 | 成人国产免费观看 | 久久99精品久久久久久久久久久久 | 成年免费视频黄网站在线观看 | 日韩欧美精品中文字幕 | 爱性久久久久久久 | 999久久国精品免费观看网站 | 亚洲导航深夜福利涩涩屋 | 久久精品网 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲小视频在线观看,com | 有兽焉免费动画 | 国产乱淫av片免费网站 | 亚洲最大的成人网 | 久久久久夜色精品国产老牛91 | 香蕉视频1024 | 国产又白又嫩又紧又爽18p | 视频h在线 | 91专区在线观看 | 在线中文字幕不卡 | 国产一区二区精品在线观看 | 久久中文免费 | 精品一区二区视频在线观看 | hdjapanesemassagehd日本 | 最近中文字幕一区二区 | 国产精品1区 | 国产成人高清在线观看 | 国产精品二区高清在线 | 欧美一区二区网站 | 国产一级小视频 | 99在线精品视频免费观看20 | 亚洲第一男人天堂 | av电影院在线观看 | 成人午夜免费国产 | 国产毛片网 | 成人毛片在线 | av电影在线网 |