解析.Net編程接口剖析系列之比較和排序_.Net教程
推薦:揭秘.net基礎(chǔ)知識錯誤注意二十二點知識1:command調(diào)用存儲過程的時候,如果輸出是dataset,selectcommand的command對象的connection先要指出,否則catch一輩子也是空的.. 2:存儲過程的varchar字段如果是x.x的這種格式,容易出現(xiàn)細(xì)
我們知道,與C 相比較,C#以及整個.Net并不支持多繼承,而相應(yīng)的,C#支持了接口,并且支持一個類型實現(xiàn)多個接口。對于接口的概念,相信大部分讀者已經(jīng)有了很好的了解,而我這里談?wù)剛人對于接口理解,只求拋磚引玉。
在我認(rèn)為,一個接口就是一個對類型的某種能力的認(rèn)證,并且是以某種標(biāo)準(zhǔn)化的形式將這種能力規(guī)范出來。你的類型實現(xiàn)了某個接口,換而言之,也就是說這個類型具備了此接口所標(biāo)識的能力。比如現(xiàn)在出國留學(xué)考托福GRE,開車考駕照這些東西,其實就是相當(dāng)于我們編程中接口;從某種意義上說,你通過了GRE,就說明你具備在國外學(xué)習(xí)所需要的語言能力,而你考取了駕照,就證明了你具有上路行駛的能力了。接口同樣如此,給你類型實現(xiàn)特定的一些接口,就是給他們標(biāo)記了他們所具備的特別能力,而一些依賴這些能力的功能,得以用通用的代碼實現(xiàn)重用,實現(xiàn)可擴(kuò)展。
我的這個關(guān)于接口的系列文章,主要是對.Net編程一些非常重要的接口來進(jìn)行詳細(xì)講解,深入了解這些接口的原理和應(yīng)用。這對于我們寫出精簡優(yōu)美的代碼,是非常有幫助的;畢竟,我們在知道自己想做什么之后,首先應(yīng)該知道.Net Framework能給我們做什么。
在本篇以及后續(xù)的幾篇文章我們將會談到以下幾個主題:
(一)比較和排序(IComparable和IComparer)
(二)枚舉(IEnumerable和IEnumerator)
(三) 序列化(ISerializable和IXmlSerializable)
System.IComparable & System.IComparable<T>
顧名思義,一個實現(xiàn)了IComparable的class應(yīng)該就是一個可以對實例進(jìn)行相互比較的class,我們先來看看它的定義:
以下為引用的內(nèi)容:
[ComVisible(true)]
public interface IComparable
{
int CompareTo(object obj);
}
這個接口相當(dāng)簡單,只提供了一個接口函數(shù):CompareTo,如果當(dāng)前對象比被比較的對象小,那么返回負(fù)數(shù);如果相當(dāng),則返回0;如果當(dāng)前對象比被比較的對象大,則返回正數(shù)。
但是,如果你覺得這個接口僅僅是能夠讓你比較兩個對象大小,那么你就錯了,這個接口更大的作用是能夠?qū)崿F(xiàn)了該類型線性數(shù)據(jù)結(jié)構(gòu)的排序功能。比如List<T>.Sort()和Array的靜態(tài)方法Sort都能夠很好地利用IComparable來對數(shù)據(jù)進(jìn)行排序,排序算法由類庫實現(xiàn),對于我們來說,只需要讓自己的類型實現(xiàn)IComparable接口,負(fù)責(zé)比較兩個對象大小的算法就可以了。
IComparable<T>是一個泛型接口,用于實現(xiàn)對特定類型的對象的比較,用法和IComparable基本一致,這里不再進(jìn)行贅述,下面的例子也是根據(jù)IComparable來寫的。
我們來看看下面的代碼,這里定義了一個學(xué)生類Student,每個學(xué)生有自己名字和分?jǐn)?shù)。Student類實現(xiàn)了IComparable接口,兩個學(xué)生之間直接按照名字進(jìn)行比較。順便說明Scores類用于存儲學(xué)生的成績。
分享:Windows CE.Net下矩陣鍵盤開發(fā)設(shè)計詳解引言 隨著現(xiàn)代科技日新月異的發(fā)展,作為新興產(chǎn)業(yè)的嵌入式移動信息設(shè)備的應(yīng)用越來越廣。這些嵌入式設(shè)備中的PDA以其體積小、重量輕、便于攜帶、功能強(qiáng)大、功耗低等特點而備受青睞。鍵盤作
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-解析.Net編程接口剖析系列之比較和排序
。