最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 實現(xiàn)IComparable、IComparer接口、Comparer類的詳解

 更新時間:2013年05月22日 17:59:56   作者:  
本篇文章是對c#中實現(xiàn)IComparable、IComparer接口、Comparer類進行了詳細(xì)的分析詳解,需要的朋友參考下
在默認(rèn)情況下,對象的Equals(object o)方法(基類Object提供),是比較兩個對象變量是否引用同一對象。
我們要必須我自己的對象,必須自己定義對象比較方式。
IComparable和ICompare 接口是.net framework 中比較對象的標(biāo)準(zhǔn)方式,這兩個接口之間的區(qū)別如下:
1. IComparable 在要比較的對象的類中實現(xiàn),可以比較該對象和另一個對象。
2.IComparer 在一個單獨的類中實現(xiàn),可以比較任意兩個對象。
一般情況下,我們使用 IComparable 給出類的默認(rèn)比較代碼,使用其他類給出非默認(rèn)的比較代碼。
一、IComparable提供了一個方法int CompareTo(object obj)。這個方法接受一個對象,所以可以實現(xiàn)這個接口
比如:以便把 Person 對象傳送給它,
說明這個人是否比當(dāng)前的人更年老或年輕。實際上,這個方法返回一個int,所以可和下面的代碼說明第二個人更年老還是更年輕。
復(fù)制代碼 代碼如下:

if(person1.CompareTo(person2) == 0)
{
  Console.WriteLine("Same age");
}
else if(person1.CompareTo(person2) > 0 )
{
  Console.WriteLine("person 1 is older");
}
else
{
  Console.WriteLine("person1 is younger");
}

二、IComparer 也提供了一個方法 Compare().這個方法接受兩個對象,返回一個整型結(jié)果,這與 CompareTo()相同。
對于支持 IComparer的對象,可以使用下面的代碼:
復(fù)制代碼 代碼如下:

if(personComparer.Compare(person1,person2) == 0)
{
  Console.WriteLine("same age");
}
else if(personComparer.Compare(person1,person2) > 0 )
{
  Console.WriteLine("person 1 is older");
}
else
{
  Console.WriteLine("person1 is younger");
}

在這兩種情況下,提供給方法的參數(shù)是system.object類型。也就是說,可以比較任意類型的兩個對象。所以,在返回結(jié)果之前,通常需要進行某種類型比較,如果使用了錯誤的類型,還會拋出異常。實際上,我們是使用泛型接口IComparable<T>,可以省略對象轉(zhuǎn)換。可以參見后面的日記。
三、.net framework 在類 Comparer 上提供了 IComparer 接口的默認(rèn)實現(xiàn)方式,類 Comparer 位于 system.collections 名稱空間中,可以對簡單類型以及支持IComparable
接口的任意類型進行特定文化的比較。
例如,可以通過下面的代碼使用它:
復(fù)制代碼 代碼如下:

string firststring = "First String";
string secondstring = "Second string";
Comparer.Default.Compare(firststring , secondstring);

int firstNumber = 35;
int secondNumber = 23;
Comparer.Default.Compare(firstNumber , secondNumber);

這里使用Comparer.Default靜態(tài)成員獲取Comparer類的一個實例,接著使用 Compare()方法來比較。
在使用 Comparer時,必須使用可以比較的類型。例如,試圖比較firstString 和 firstNumber 就會生成一個異常。
下面是這個類的一些注意事項:
1.檢查傳送給 Comparer.Compare()的對象,看看它們是否支持 IComparable.如果支持,就使用該實現(xiàn) 代碼。
2.允許使用null值,它表示小于其他對象。
3.字符串根據(jù)當(dāng)前文化來處理。要根據(jù)不同的文化(或語言)處理字符串,Comparer類必須使用其構(gòu)造函數(shù)進行實例 化,以便傳送指定文化的
System.Globalization.CultureInfo對象。
4.字符串在處理時要區(qū)分大小寫,如果要以不區(qū)分大小寫的方式來處理它們,就需要使用 CaseInsensitiveComparer類,該類以相同的方式工作。

相關(guān)文章

  • C#多線程死鎖介紹與案例代碼

    C#多線程死鎖介紹與案例代碼

    這篇文章介紹了C#多線程的死鎖,并使用案例代碼實現(xiàn)解決方案,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#生成Word文件(圖片、文字)

    C#生成Word文件(圖片、文字)

    這篇文章主要為大家詳細(xì)介紹了C#生成Word文件,包括圖片、文字等素材,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • c#結(jié)構(gòu)和類的相關(guān)介紹

    c#結(jié)構(gòu)和類的相關(guān)介紹

    結(jié)構(gòu)和類的共同點都是屬于抽象數(shù)據(jù)類型,包含數(shù)據(jù)和數(shù)據(jù)的操作。不同點在于結(jié)構(gòu)偏重于數(shù)據(jù)語意,而類偏重於行為語意。
    2012-12-12
  • RabbitMQ的配置與安裝教程全紀(jì)錄

    RabbitMQ的配置與安裝教程全紀(jì)錄

    這篇文章主要給大家介紹了關(guān)于RabbitMQ的配置與安裝的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • 聊聊C#中的Mixin的具體用法

    聊聊C#中的Mixin的具體用法

    本文主要介紹了C#中的Mixin的具體用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C#實現(xiàn)學(xué)員信息管理系統(tǒng)

    C#實現(xiàn)學(xué)員信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)學(xué)員信息管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C#泛型的使用案例

    C#泛型的使用案例

    這篇文章介紹了C#泛型的使用案例,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • 講解C#設(shè)計模式編程中享元模式的運用

    講解C#設(shè)計模式編程中享元模式的運用

    這篇文章主要介紹了C#設(shè)計模式編程中享元模式的運用,享元模式主張限制對象的數(shù)量來優(yōu)化內(nèi)存使用,需要的朋友可以參考下
    2016-02-02
  • C# 將字節(jié)流轉(zhuǎn)換為圖片的實例方法

    C# 將字節(jié)流轉(zhuǎn)換為圖片的實例方法

    C# 將字節(jié)流轉(zhuǎn)換為圖片的實例方法,需要的朋友可以參考一下
    2013-03-03
  • Unity讀取Excel文件轉(zhuǎn)換XML格式文件

    Unity讀取Excel文件轉(zhuǎn)換XML格式文件

    這篇文章主要為大家詳細(xì)介紹了Unity讀取Excel文件轉(zhuǎn)換XML格式文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論

漳平市| 辽宁省| 景泰县| 阳西县| 基隆市| 西充县| 海林市| 锦州市| 北票市| 松桃| 巴楚县| 莱西市| 大厂| 日照市| 新闻| 遂平县| 紫金县| 昌吉市| 四子王旗| 伊通| 额济纳旗| 张家港市| 德江县| 延吉市| 旺苍县| 镇原县| 泗水县| 景宁| 刚察县| 佛山市| 梅州市| 盘锦市| 武定县| 丁青县| 新沂市| 鄂温| 寿光市| 绥江县| 宁强县| 景德镇市| 西乌珠穆沁旗|