精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#數(shù)組排序與對象大小比較

開發(fā) 后端
我們將介紹C#數(shù)組排序與對象大小比較,包括一些實(shí)例代碼以及IComparable、IComparable<T>和IComparer<T>三大接口的用法。

  從個小例子開始:

  1.   int[] intArray = new int[]{2,3,6,1,4,5};  
  2.   Array.Sort(intArray);  
  3.   Array.ForEach<int>(intArray,(i)=>Console.WriteLine(i)); 

  這個例子定義了一個int數(shù)組,然后使用Array.Sort(arr)靜態(tài)方法對此數(shù)組進(jìn)行排序,最后輸出排序后的數(shù)組。以上例子將毫無意外的依次輸出1,2,3,4,5,6.

  為什么Array的Sort方法可以正確的對int數(shù)組進(jìn)行排序呢,我們自定義類可以嗎?試試看,如下代碼:

  1.   public class Student  
  2.   {  
  3.   public int Age { getset; }  
  4.   public string Name { getset; }  
  5.   public int Score { getset; }  
  6.   }  
  7.   static void Main(string[] args)  
  8.   {  
  9.   Student[] students = new Student[]{  
  10.   new Student(){Age = 10,Name="張三",Score=70},  
  11.   new Student(){Age = 12,Name="李四",Score=97},  
  12.   new Student(){Age = 11,Name="王五",Score=80},  
  13.   new Student(){Age = 9,Name="趙六",Score=66},  
  14.   new Student(){Age = 12,Name="司馬",Score=90},  
  15.   };  
  16.   Console.WriteLine("--------------默認(rèn)排序輸出--------");  
  17.   Array.Sort(students);  
  18.   Array.ForEach<Student>(students,(s)=>Console.WriteLine(string.Format("{0}{1,2}歲了,他的分?jǐn)?shù)是{2,3}",s.Name,s.Age,s.Score)));  
  19.   Console.Read();  
  20.   } 

  我們定義了Student類然后同樣對他的數(shù)組進(jìn)行排序,程序正確的編譯通過,但是運(yùn)行出錯,運(yùn)行時拋出了異常:System.InvalidOperationException{"Failed to compare two elements in the array."},這個異常的InnerException是ArgumentException{"At least one object must implement IComparable."};運(yùn)行時異常說明:我們要使用Array.Sort(arr)靜態(tài)方法,必須得保證數(shù)組中有一個元素實(shí)現(xiàn)IComparable接口。既然如此我們就讓Student類實(shí)現(xiàn)IComparable接口.

  1.   public class Student :IComparable  
  2.   {  
  3.   public int Age { getset; }  
  4.   public string Name { getset; }  
  5.   public int Score { getset; }  
  6.   /// <summary>  
  7.   /// 實(shí)現(xiàn)IComparable接口,用Age做比較  
  8.   /// </summary>  
  9. /// <param name="obj">比較對象</param>  
  10.   /// <returns>比較結(jié)果</returns>  
  11.   public int CompareTo(object obj)  
  12.   {  
  13.   if (obj is Student)  
  14.   {  
  15.   return Age.CompareTo(((Student)obj).Age);  
  16.   }  
  17.   return 1;  
  18.   }  
  19.   } 

  在Student類中實(shí)現(xiàn)了IComparable接口,在CompareTo方法中比較Student的Age屬性,這一次再次編譯運(yùn)行,程序正常的輸出了按照年齡排序的Student數(shù)組。

  假如說我們要對Student的Score屬性進(jìn)行排序該怎么辦呢? Student類實(shí)現(xiàn)的IComparable接口只能按照一種屬性排序呀。

  這個是很容易實(shí)現(xiàn)的.net的類庫開發(fā)者早為我們準(zhǔn)備了另一個接口IComparer<T>接口用來實(shí)現(xiàn)比較類型T的兩個實(shí)例。如下StudentScoreComparer類實(shí)現(xiàn)了對Student按照Score屬性比較的IComparer<Student>

  1.   public class StudentScoreComparer : IComparer<Student>  
  2.   {  
  3.   public int Compare(Student x, Student y)  
  4.   {  
  5.   return x.Score.CompareTo(y.Score);  
  6.   }  
  7.  } 

  現(xiàn)在我們可以使用下面代碼對Student數(shù)組按照Score屬性進(jìn)行排序:

  Console.WriteLine("----------按分?jǐn)?shù)排序輸出------------");

  Array.Sort(students, new StudentScoreComparer());

  Array.ForEach<Student>(students, (s) => Console.WriteLine(string.Format("{0}{1,2}歲了,他的分?jǐn)?shù)是{2,3}", s.Name, s.Age, s.Score)));

  不過一個簡單的按照Score屬性排序,再定義一個類是不是有點(diǎn)大題小作呀,有沒有更好的辦法呢?當(dāng)然有. .net為我們準(zhǔn)備了比較對象大小的委托Comparison<T>我們可以使用拉姆達(dá)表達(dá)式或者匿名委托直接排序,如下代碼實(shí)現(xiàn):

  1.   Console.WriteLine("----------按分?jǐn)?shù)排序輸出----------");  
  2.   Array.Sort(students, (s1, s2) => s1.Score.CompareTo(s2.Score));  
  3.   Array.ForEach<Student>(students, (s) => Console.WriteLine(string.Format("{0}{1,2}歲了,他的分?jǐn)?shù)是{2,3}", s.Name, s.Age, s.Score))); 

  完整代碼示例如下:

  1.   using System;  
  2.   using System.Collections.Generic;  
  3.   using System.Linq;  
  4.   using System.Text;  
  5.   namespace SortingInCSharp  
  6.   {  
  7.   class Program  
  8.   {  
  9.   public class Student : IComparable  
  10.   {  
  11.   public int Age { getset; }  
  12.   public string Name { getset; }  
  13.   public int Score { getset; }  
  14.   /// <summary>  
  15.   /// 實(shí)現(xiàn)IComparable接口,用Age做比較  
  16.   /// </summary>  
  17.   /// <param name="obj">比較對象</param>  
  18.   /// <returns>比較結(jié)果</returns>  
  19.   public int CompareTo(object obj)  
  20.   {  
  21.   if (obj is Student)  
  22.  {  
  23.   return Age.CompareTo(((Student)obj).Age);  
  24.   }  
  25.   return 1;  
  26.   }  
  27.   }  
  28.   static void Main(string[] args)  
  29.   {  
  30.   Student[] students = new Student[]{  
  31.   new Student(){Age = 10,Name="張三",Score=70},  
  32.   new Student(){Age = 12,Name="李四",Score=97},  
  33.   new Student(){Age = 11,Name="王五",Score=80},  
  34.   new Student(){Age = 9,Name="趙六",Score=66},  
  35.   new Student(){Age = 12,Name="司馬",Score=90},  
  36.   };  
  37.   Console.WriteLine("--------------默認(rèn)排序輸出--------");  
  38.   Array.Sort(students);  
  39.   Array.ForEach<Student>(students, (s) => Console.WriteLine(string.Format("{0}{1,2}歲了,他的分?jǐn)?shù)是{2,3}", s.Name, s.Age, s.Score)));  
  40.   Console.WriteLine("----------按分?jǐn)?shù)排序輸出------------");  
  41.   Array.Sort(students, new StudentScoreComparer());  
  42.   Array.ForEach<Student>(students, (s) => Console.WriteLine(string.Format("{0}{1,2}歲了,他的分?jǐn)?shù)是{2,3}", s.Name, s.Age, s.Score)));  
  43.   Console.WriteLine("----------按分?jǐn)?shù)排序輸出----------");  
  44.   Array.Sort(students, (s1, s2) => s1.Score.CompareTo(s2.Score));  
  45.   Array.ForEach<Student>(students, (s) => Console.WriteLine(string.Format("{0}{1,2}歲了,他的分?jǐn)?shù)是{2,3}", s.Name, s.Age, s.Score)));  
  46.   Console.Read();  
  47.   }  
  48.   public class StudentScoreComparer : IComparer<Student>  
  49.   {  
  50.   public int Compare(Student x, Student y)  
  51.   {  
  52.   return x.Score.CompareTo(y.Score);  
  53.   }  
  54.   }  
  55.   }  
  56.   } 

  總結(jié):

  在C#中有三個關(guān)于比較對象大小的接口,分別是IComparable、IComparable<T>和IComparer<T>。 IComparable和IComparable<T>是類本身實(shí)現(xiàn)的在實(shí)例之間比較大小的行為定義。IComparer<T>是定義在被比較類之外的專門比較兩個T類型對象大小的行為,另外還有一個用于比較的委托定義Comparison<T>可以讓我們用拉姆達(dá)表達(dá)式或者匿名委托或方法更方便的排序。

原文鏈接:http://www.cnblogs.com/yukaizhao/archive/2011/08/19/csharp-compare.html

【責(zé)任編輯:彭凡 TEL:(010)68476606】

 

責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-27 17:54:13

C#與Flex

2009-08-24 16:40:18

C#與VB7

2009-08-18 12:23:38

2009-06-15 11:03:10

Java語言C#語言

2009-09-07 05:40:16

C#窗體位置C#窗體大小

2009-07-31 14:04:11

C#時間比較大小

2009-08-28 16:50:25

C# PromptPo

2009-08-20 17:13:37

C# FileSyst

2009-08-28 12:41:49

靜態(tài)方法與非靜態(tài)方法

2020-09-28 08:11:14

JavaScript數(shù)據(jù)

2009-09-10 16:30:11

C#排序函數(shù)

2009-08-11 14:57:11

比較C#和Java

2009-08-11 13:13:09

C#和Java比較

2009-08-03 16:35:30

C#日期比較

2009-08-21 14:22:22

C# new和over

2009-08-26 13:07:07

C#交錯數(shù)組

2009-09-17 16:53:15

C#數(shù)組

2009-08-07 11:26:53

C#數(shù)組結(jié)構(gòu)

2009-08-10 16:19:37

C#冒泡排序

2009-09-02 15:41:21

C# HTTPWebR
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产精品视频一区二区三区四区五区| 亚洲最大福利网| 欧美18—19性高清hd4k| 国产极品久久久久久久久波多结野| 国产精品国产三级国产aⅴ原创| 91黄色精品| 黄色在线免费观看| 午夜精品视频一区二区三区在线看| 日韩精品中文字幕在线不卡尤物| 国产熟女高潮视频| а√天堂8资源在线官网| 成人精品视频一区二区三区| 国产精品极品在线| 精品少妇久久久久久888优播| 色综合综合网| 日韩精品专区在线影院重磅| 大香煮伊手机一区| 日本色护士高潮视频在线观看| 26uuu久久天堂性欧美| 成人免费在线视频网址| 亚洲欧美自拍视频| 欧美激情第10页| 中文字幕亚洲无线码在线一区| 亚洲成a人无码| 亚洲一区二区av| 欧美日韩亚洲一区二区| www国产免费| 1769在线观看| 中文字幕成人av| 久久久久无码国产精品一区| 成 人 黄 色 片 在线播放| 视频在线观看国产精品| 国外成人在线视频| 国产在线综合网| 亚洲精品网址| 日韩在线不卡视频| 中文字幕在线观看免费高清| 在线看成人短视频| 亚洲精品久久久久中文字幕二区 | 亚洲AV无码成人精品区明星换面| 97久久亚洲| 欧美大片日本大片免费观看| 日本亚洲一区二区三区| 白嫩亚洲一区二区三区| 欧美视频精品在线观看| 日韩在线第三页| 欧美黄色网页| 日本韩国精品一区二区在线观看| 凹凸国产熟女精品视频| 亚洲第一av| 欧美色视频日本高清在线观看| 久久久999视频| 深夜av在线| 日韩欧美亚洲一二三区| 爱福利视频一区二区| 伊人久久国产| 日本丶国产丶欧美色综合| 任你操这里只有精品| 你懂得影院夜精品a| 91国产免费观看| 欧美性猛交xxx乱久交| 黄色成人在线观看网站| 欧美久久久影院| 亚洲高清av一区二区三区| 国产视频网站一区二区三区| 日韩欧美中文字幕公布| 国产成人av片| 伦理一区二区三区| 亚洲人成77777在线观看网| 在线免费观看视频| 婷婷激情图片久久| 欧美男插女视频| 日韩精品视频播放| 日韩黄色免费电影| 91人人爽人人爽人人精88v| www日本视频| 91视视频在线观看入口直接观看www | 久久中文免费视频| 在线看片欧美| 国产精品福利观看| 国产激情视频在线播放| 99久久久免费精品国产一区二区 | 亚洲色图网站| 97视频com| 在线播放国产一区| 成人av资源网站| 日本成人黄色免费看| 黄色网址在线免费观看| 亚洲国产精品久久人人爱蜜臀| 黄色一级视频片| 欧美国产日韩在线播放| 神马午夜精品95| 国产亚洲综合av| 黄色一级片国产| 欧美成人精品一区二区男人小说| 欧美日韩一区中文字幕| 潘金莲一级淫片aaaaaaa| 免费看久久久| www.欧美免费| 婷婷激情五月网| 国产一区二区福利视频| 就去色蜜桃综合| av在线网址观看| 色综合久久99| 香蕉视频在线观看黄| 国产区精品区| 久久青草福利网站| 国产精品系列视频| 91小视频在线观看| 国产成人三级视频| 日韩av超清在线观看| 精品捆绑美女sm三区| 黄色av免费播放| 亚洲男人影院| 成人自拍网站| 免费看美女视频在线网站| 色综合久久综合网97色综合| 国产精品熟女一区二区不卡| 不卡av一区二区| 91av在线网站| 日韩中文字幕观看| 亚洲人精品午夜| 91精品无人成人www| 香蕉视频一区| 538国产精品一区二区免费视频 | 日韩hd视频在线观看| 加勒比婷婷色综合久久| 日本午夜一区二区| 欧美大香线蕉线伊人久久国产精品| 欧美人与牲禽动交com| 91精品午夜视频| 国产福利在线导航| 蜜臀久久久久久久| 日韩电影天堂视频一区二区| 麻豆免费在线| 亚洲韩国日本中文字幕| 久久久无码一区二区三区| 国产剧情一区在线| 国内外成人激情免费视频| 久久不卡日韩美女| 最近更新的2019中文字幕| 欧美超碰在线观看| 国产欧美一区二区精品婷婷| 欧美在线观看成人| 中日韩免视频上线全都免费| 77777少妇光屁股久久一区| 国产综合视频在线| 亚洲1区2区3区视频| 久久无码专区国产精品s| 影视亚洲一区二区三区| 91牛牛免费视频| 欧美色图天堂| 亚洲第一网站男人都懂| 国产精品成人久久| 97精品久久久午夜一区二区三区| 久操网在线观看| 欧美大奶一区二区| 热99在线视频| 国产裸舞福利在线视频合集| 欧美在线播放高清精品| 性爱在线免费视频| 国产精品亚洲综合一区在线观看| 日产精品久久久久久久蜜臀| 岛国精品一区| 日本精品视频在线| 美女国产在线| 精品久久久久一区| 亚洲国产成人无码av在线| 国产欧美日韩视频在线观看| 亚洲欧美久久久久| 欧美黄色一区二区| 久久精品中文字幕一区二区三区| 午夜精品成人av| 久久精品视频在线| 免费看黄网站在线观看| 91国偷自产一区二区使用方法| 日本精品久久久久中文| 国产成人小视频| 日本免费不卡一区二区| 欧美偷拍综合| 99在线看视频| 国产综合色区在线观看| 久久亚洲精品一区二区| 人妻精品无码一区二区| 欧美在线视频你懂得| 欧美性猛交xxxxx少妇| 2023国产一二三区日本精品2022| 久热精品在线观看视频| 韩国在线一区| 亚洲精品一区二区三区av| 亚洲三区欧美一区国产二区| 日本欧美爱爱爱| 在线中文字幕第一页| 亚洲日韩欧美视频一区| 99精品视频在线播放免费| 欧美日韩另类字幕中文| 亚洲xxxx3d动漫| 91香蕉视频污| caopor在线| 青椒成人免费视频| 国产男女免费视频| 小小影院久久| 青娱乐一区二区| 国产成人在线中文字幕| 国产在线播放不卡| 在线高清av| 欧美国产亚洲视频| 日本在线人成| 亚洲一级黄色片| 日本xxxxxwwwww| 欧美一区二区三区视频在线| 国产一区免费看| 天天综合网 天天综合色| 天天鲁一鲁摸一摸爽一爽| 久久久夜色精品亚洲| 亚洲少妇一区二区三区| 九九热在线视频观看这里只有精品| 日韩免费视频播放| 韩国一区二区三区在线观看| 免费成人深夜夜行网站视频| 精品av一区二区| 久久综合九色99| 精品福利一区| 国产福利一区二区三区在线观看| 亚洲图片小说区| 国产美女精品免费电影| 亚洲一区二区三区四区| 欧美亚洲国产视频| 日韩欧美一中文字暮专区| 欧美激情在线有限公司| 羞羞视频在线免费国产| 久久久av亚洲男天堂| 日本在线免费看| 中文字幕亚洲一区二区三区| 成人高清网站| 在线日韩日本国产亚洲| 成年人视频在线看| 一本久久综合亚洲鲁鲁| 岛国在线视频| 综合av色偷偷网| 亚洲视频tv| 久久精品免费播放| 黄色在线播放网站| 欧美多人乱p欧美4p久久| 超碰在线最新| 欧美激情va永久在线播放| 性欧美videoshd高清| 欧美激情视频在线免费观看 欧美视频免费一 | 性一交一乱一伧国产女士spa| 欧美精品日本| 真人抽搐一进一出视频| 国产欧美一级| 日本成人在线免费视频| 日韩不卡一区二区三区| 日本激情综合网| 国内外成人在线视频| 亚洲妇女无套内射精| 99久久精品免费看国产免费软件| 波多野结衣视频播放| 久久综合色8888| 18精品爽国产三级网站| 成人免费在线观看入口| 欧美极品aaaaabbbbb| 偷偷要91色婷婷| 亚洲国产精品无码久久久| 欧美老女人第四色| 亚洲国产精品久久久久久6q| 日韩精品在线看| av中文字幕在线| 欧美成人午夜激情在线| 国产蜜臀av在线播放| 欧美亚洲在线播放| 中文字幕成人| 精品欧美一区二区三区久久久| 性欧美xxxx免费岛国不卡电影| 亚洲高清在线观看一区| 你懂的国产精品| 久久无码高潮喷水| 激情深爱一区二区| www.17c.com喷水少妇| 日本一区二区综合亚洲| 毛片a片免费观看| 色噜噜狠狠成人网p站| 国产精品永久久久久久久久久| 精品av久久707| porn亚洲| 久久久久五月天| av成人免费看| 成人精品水蜜桃| 日韩精品一区二区三区免费观影 | 青草视频在线免费直播 | 91看片淫黄大片一级| 五月天精品在线| 亚洲v精品v日韩v欧美v专区| 自拍偷拍福利视频| 亚洲成人久久久| 免费av网站在线观看| 538国产精品一区二区免费视频| 亚洲国产伊人| 美女被啪啪一区二区| 欧美.日韩.国产.一区.二区| 精品久久久久av| 成人黄色777网| 免费国产羞羞网站美图| 91国偷自产一区二区开放时间 | 欧美视频国产视频| 91麻豆精品在线观看| 欧美精品xxxxx| 欧美日韩成人综合| 激情在线视频| 97超级碰在线看视频免费在线看 | 日韩久久久精品| 欧美性天天影视| 日韩美女福利视频| 欧美日韩夜夜| 久草视频这里只有精品| 国产一区久久久| 日本爱爱小视频| 欧美优质美女网站| 男男电影完整版在线观看| 久久久久久中文| xxxxxhd亚洲人hd| 欧美精品久久96人妻无码| 美国av一区二区| 中文字幕人妻一区二区三区在线视频| 精品免费在线视频| 刘亦菲久久免费一区二区| 欧美裸身视频免费观看| 电影中文字幕一区二区| 一区二区三区欧美在线| 青青草97国产精品免费观看无弹窗版| 国产精品1000部啪视频| 精品国产精品三级精品av网址| 可以免费观看的毛片| 久久久久久久久国产| 成人看片黄a免费看视频| 大胆欧美熟妇xx| 高清不卡一区二区| 国产午夜视频在线| 亚洲精品一区二区精华| 成年人视频免费在线播放| av激情久久| 欧美午夜精品| 大尺度做爰床戏呻吟舒畅| 亚洲国产欧美日韩另类综合| 欧美特级特黄aaaaaa在线看| 久久久久久久一区二区| 女仆av观看一区| 国产真实乱子伦| 久久精品夜夜夜夜久久| 自拍偷拍第八页| 不卡伊人av在线播放| 日韩精品视频中文字幕| 草草视频在线免费观看| 91视频.com| 亚洲第一区av| 久久久精品久久久| 爱爱精品视频| 黄色片视频在线免费观看| 国产日韩影视精品| 97成人免费视频| 欧美激情一区二区三区高清视频| jizz性欧美2| 久久婷婷国产91天堂综合精品| 国产精品美女一区二区三区| 国产又大又粗又长| 久久久在线观看| 久草在线成人| 一级 黄 色 片一| 懂色aⅴ精品一区二区三区蜜月| 黄色av免费在线观看| 亚洲aⅴ日韩av电影在线观看| 在线高清一区| 免费福利视频网站| 欧美一级黄色录像| 日韩电影免费看| 图片区小说区区亚洲五月| 国产精品一区二区在线播放 | 九九九九精品| 青青草精品视频| 国产亚洲第一页| 一区二区欧美日韩视频| 日本精品视频| 激情婷婷综合网| 亚洲美女屁股眼交3| 日本亚洲欧美| 亚洲xxx视频| 美女久久一区| 国产亚洲精品久久777777| 亚洲天天在线日亚洲洲精| 亚洲日本va| 小泽玛利亚视频在线观看| 午夜精品爽啪视频| 国产福利视频在线观看| 欧美日韩日本网| 成人av在线一区二区| 国产情侣在线播放| 国产成人精品一区二区| 影音先锋亚洲精品| 看免费黄色录像|