精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

2021年精品国产福利在线| 青青青草网站免费视频在线观看| 成人系列视频| 日韩欧美的一区二区| 精品国产一区二区三区无码| 天堂中文在线资源| 免费看欧美女人艹b| 久久综合五月天| 性久久久久久久久久久| 超碰aⅴ人人做人人爽欧美| 中文字幕av一区二区三区高| 国产综合香蕉五月婷在线| 精品一区免费观看| 日韩精品一区二区久久| 亚洲精品一区二区三区精华液 | 97欧洲一区二区精品免费| 日韩免费不卡视频| 国产精品久久久久久麻豆一区软件 | 日韩成人av在线资源| 欧美日韩日日夜夜| 亚洲 高清 成人 动漫| 中文字幕在线免费| 91麻豆蜜桃一区二区三区| 成人黄色免费看| 福利网址在线观看| 欧美色一级片| yellow中文字幕久久| 精品无码国产一区二区三区51安| 四虎精品永久免费| 色域天天综合网| 日韩精品视频在线观看视频| 国产三级视频在线| 99精品久久99久久久久| av日韩免费电影| 国产精品国产三级国产普通话对白| 久久福利精品| 亚洲91av视频| 国产精品2020| 狠狠久久婷婷| 欧美—级高清免费播放| 成年人午夜剧场| 久久一区二区三区喷水| 亚洲欧洲在线免费| 国精产品一区一区三区免费视频 | 欧美婷婷久久| 天堂中文在线看| 成人视屏免费看| 亚洲最大福利视频| 国产精品久久久久久免费免熟| 日韩av一区二区在线影视| 97久久超碰福利国产精品…| 久久久久久久极品内射| 你懂的国产精品| 伦理中文字幕亚洲| 黄色一级片中国| 亚洲精品a级片| 久久在精品线影院精品国产| www.99re6| 999精品视频| 久久久999精品免费| 91视频最新网址| 91成人免费| 欧美成人三级视频网站| 欧美精品videos极品| 综合国产在线| 欧美wwwxxxx| 精品99在线观看| 亚洲福利精品| 26uuu国产精品视频| 美女又爽又黄免费视频| 日韩高清在线观看| 国产精品久久久久久久9999| 日本一区二区三区久久| 精品一区二区三区久久| 91亚洲永久免费精品| 精品人妻av一区二区三区| 懂色av一区二区夜夜嗨| 日韩一区二区免费在线电影| 天天操天天干天天做| 亚洲国产伊人| 欧美成人免费网站| avtt香蕉久久| sdde在线播放一区二区| 少妇精69xxtheporn| 色偷偷中文字幕| 亚洲伊人影院| 亚洲毛片一区二区| 欧美自拍偷拍网| 欧美福利网址| 欧美最顶级丰满的aⅴ艳星| 成年人晚上看的视频| 韩国欧美国产1区| 国产精品一 二 三| 欧洲一区av| 亚洲天堂免费看| 日韩 欧美 视频| 成人免费福利| 日韩亚洲电影在线| 色无极影院亚洲| 亚洲天天影视网| 日本成熟性欧美| 99热这里只有精品在线| www成人在线观看| 在线看视频不卡| 黄色在线网站噜噜噜| 色综合久久久久久久久久久| 亚洲黄色av片| 亚洲裸色大胆大尺寸艺术写真| 最新亚洲国产精品| 黄色激情视频在线观看| 久久精品二区亚洲w码| 精品乱码一区二区三区| fc2ppv国产精品久久| 色哟哟一区二区三区| 亚洲午夜精品在线观看| 欧美色爱综合| 78色国产精品| 成 人 免费 黄 色| 国产精品久久久久影视| heyzo国产| 亚洲成av人片在线观看www| 亚洲人成电影网站色…| 日本熟女一区二区| 国产一二三精品| 三区精品视频| 午夜av不卡| 精品国产制服丝袜高跟| 国产精品免费在线视频| 日韩中文字幕不卡| 国产亚洲二区| 日本不卡影院| 91精品国产色综合久久久蜜香臀| 免费视频91蜜桃| 国产女优一区| 91国在线精品国内播放| 国产美女永久免费| 国产精品视频一二| 免费日韩视频在线观看| 欧美激情网址| 欧美激情亚洲自拍| www.xxxx国产| 亚洲精品国产精华液| 亚洲va在线va天堂va偷拍| 国产精品嫩草影院在线看| 88国产精品欧美一区二区三区| 亚洲国产精品二区| 亚洲精品成人在线| 色欲无码人妻久久精品| 欧美在线三级| 99精品欧美一区二区三区| av片在线观看网站| 6080yy午夜一二三区久久| 久久精品亚洲a| 久久国产人妖系列| 这里只有精品66| 日本a人精品| 久久影院免费观看| 不卡视频免费在线观看| 亚洲一区二区三区四区在线观看 | 欧美另类老女人| www.热久久| 亚洲一区二区三区四区五区中文 | 一级特黄aa大片| 国产精品国产三级国产普通话三级 | 女人让男人操自己视频在线观看 | 欧美日韩一区免费| 91精彩刺激对白露脸偷拍| 久久久久久穴| 亚洲美女搞黄| 日韩精品中文字幕一区二区 | 亚洲午夜在线观看| 电影91久久久| 久久久久久久网站| 三级在线电影| 欧美三级在线视频| 破处女黄色一级片| 99久久免费精品高清特色大片| 久久久久久免费看| 国内精品久久久久久99蜜桃| 国产伊人精品在线| 男女在线视频| 亚洲欧美制服第一页| 91精品国自产| 一区2区3区在线看| 99久久人妻无码精品系列| 免费在线成人网| 国产激情在线看| 日本韩国欧美超级黄在线观看| 国产精品99导航| 欧美日韩视频在线播放| 亚洲第一天堂无码专区| 国产一级片免费视频| 亚洲精品成人少妇| 国产精品三级在线观看无码| 狠狠色伊人亚洲综合成人| 又大又硬又爽免费视频| 精品亚洲成人| 成人h片在线播放免费网站| www555久久| 一区二区三区 在线观看视| 成人黄色在线观看视频| 色婷婷久久久综合中文字幕| 日本午夜在线观看| 久久综合五月天婷婷伊人| 手机av在线网站| 麻豆成人精品| 日本免费a视频| 精品国产乱码久久久久久果冻传媒| 亚洲直播在线一区| 色成人免费网站| 午夜精品久久久久久久99黑人| 1pondo在线播放免费| 日韩成人免费视频| a天堂视频在线| 欧美亚洲一区三区| 五月天婷婷丁香| 亚洲欧美一区二区三区孕妇| 日韩精品无码一区二区三区久久久 | 一区二区三区蜜桃| 人成免费在线视频| 久久一日本道色综合| 久久久无码人妻精品无码| 蜜桃视频第一区免费观看| 欧美 日韩 国产在线观看| 中文字幕一区二区av| 亚洲高清资源综合久久精品| 网红女主播少妇精品视频| 国产精品久久国产三级国电话系列| 精品久久久网| 国产精品久久一| 色8久久影院午夜场| 97婷婷涩涩精品一区| 欧美四级在线| 久久久97精品| 国产色在线观看| 日韩在线视频网站| 国产二区在线播放| 亚洲一区第一页| 欧美男男同志| 日韩精品在线观看视频| 秋霞av鲁丝片一区二区| 日韩欧美亚洲国产另类| 国产精品久久久久久久成人午夜| 欧美色综合影院| 免费在线不卡av| 欧美在线999| 亚洲大尺度在线观看| 欧美性感一区二区三区| www.久久视频| 欧美日韩在线免费视频| 亚洲国产无线乱码在线观看| 欧美日韩综合在线免费观看| 中文字幕在线观看免费| 欧美日韩国产综合一区二区 | 黑人精品欧美一区二区蜜桃| 日本国产一级片| 精品一区二区综合| 色偷偷中文字幕| 国产91精品久久久久久久网曝门| 韩国三级hd中文字幕有哪些| 成人免费视频视频在线观看免费| 在线观看一区二区三区四区| heyzo一本久久综合| 国产精品成人无码专区| 久久综合九色欧美综合狠狠| 国产精品揄拍100视频| 国产香蕉久久精品综合网| 午夜久久久精品| 久久福利视频一区二区| 夜夜爽久久精品91| 成人va在线观看| 亚洲av无码一区二区三区人| 国产精品第五页| 黄色一级视频在线观看| 精品成人国产在线观看男人呻吟| 欧美啪啪小视频| 欧美日韩久久不卡| www男人的天堂| 亚洲美女av在线播放| 91高清在线视频| 九九热在线精品视频| 色在线免费观看| 国产日韩在线观看av| 超碰97成人| 日韩精品福利视频| 综合日韩在线| 99精品视频在线看| 国产尤物一区二区在线| 黄色网址在线视频| 国产精品视频第一区| 久久免费小视频| 欧美性视频一区二区三区| 精品久久久久成人码免费动漫| 精品视频一区在线视频| 国产午夜精品久久久久免费视| 国产做受69高潮| 国产精品诱惑| 黄色国产精品一区二区三区| 成人区精品一区二区婷婷| 青青草视频国产| 日本视频中文字幕一区二区三区| 国产精品探花在线播放| 久久久午夜精品理论片中文字幕| 九九热最新地址| 91激情在线视频| 欧美特黄一级视频| 日韩少妇与小伙激情| 天堂√中文最新版在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 日韩av影院| 久久免费一级片| 日本亚洲欧美天堂免费| 给我看免费高清在线观看| 亚洲欧美另类在线| 亚洲精品国产欧美在线观看| 亚洲电影在线看| 国产盗摄在线观看| 日韩av日韩在线观看| 成人涩涩网站| av电影一区二区三区| 日韩福利电影在线| avtt香蕉久久| 香蕉成人啪国产精品视频综合网 | 午夜精品区一区二区三| 亚洲少妇在线| 韩国黄色一级片| 亚洲人成在线播放网站岛国| 中国a一片一级一片| 国产视频亚洲精品| 川上优av中文字幕一区二区| 91观看网站| 一区二区影院| 亚洲第一色av| 国产精品久久久99| 中国一级特黄视频| 一级做a爰片久久毛片美女图片| 欧美aa免费在线| 国产日韩精品久久| 亚洲久久在线| 久久久久国产精品无码免费看| 亚洲一区二区欧美日韩| 国产黄色小视频在线观看| 久久久久北条麻妃免费看| 免费日韩成人| 亚洲午夜精品久久| 久久国产三级精品| 亚洲欧美精品久久| 欧美日本一区二区三区四区| 日本视频在线| 91热福利电影| 一区二区日韩欧美| 国产成人av免费观看| 亚洲国产精品一区二区www在线| 亚洲风情第一页| 久久久久亚洲精品成人网小说| 澳门精品久久国产| 日本福利视频在线| 久久久综合网站| 伊人网av在线| 久久中文字幕在线| av日韩精品| 日韩avxxx| 日本一区二区三区久久久久久久久不 | 香蕉久久久久久av成人| 亚洲国产一区二区视频| 无码h黄肉3d动漫在线观看| 欧美在线视频一区| 精品国产精品国产偷麻豆| 色天使在线观看| 一区二区三区日韩精品视频| 欧美一级片免费| 欧美在线视频网站| 97国产精品| 国产精品欧美性爱| 日韩欧美成人区| 日韩免费啪啪| 成人欧美视频在线| 新67194成人永久网站| 中文字幕第二区| 日韩一区二区电影在线| 91色在线看| 日韩在线三级| 国产成人三级在线观看| www成人在线| 色偷偷88888欧美精品久久久| 欧美日韩国产一区二区在线观看| 亚洲中文字幕无码av永久| 国产亚洲一区二区三区在线观看 | 在线观看成人一级片| 成人性生交大片免费看中文 | 欧美不卡在线一区二区三区| 毛片av一区二区三区| 久久久久无码国产精品| 亚洲日本aⅴ片在线观看香蕉| 精品国产一区二区三区性色av | 欧美男男tv网站在线播放| 亚洲乱码一区二区三区三上悠亚| 成人一区二区三区视频| 中文字幕永久在线视频| 韩剧1988免费观看全集|