999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C#接口的研析

2010-01-01 00:00:00董桃利,馬占鋒
電腦知識與技術 2010年3期

摘要:在C#的開發中,接口是非常重要也非常好用的東西。可是很多人卻不是很了解接口的作用及使用方法,該文以深入淺出的方式給大家進行接口的講解,并通過兩個典型的案例給大家介紹IComparable、IComparer這兩接口的典型應用。

關鍵詞:C#;類;接口;IComparable接口;IComparer接口

中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2010)03-624-02

C# Interface Research and Analysis

DONG Tao-Li, MA Zhan-feng

(Vocational and Technical College Hanzhong, Hanzhong 723000, China)

Abstract: In the C# development, the interface is very important and very nice things. But many people who are well aware of the role of the interface and the use of methods, In this paper, in simple terms means to you to explain the interface And through two typical cases to introduce IComparable 、IComparer typical application of these two interfaces.

Key words: C#; class; interface; IComparable interface; IComparer interface

在介紹接口之前首先給大家把C#中的一些基本概念簡單闡述一下:

C#(\"C sharp\"):C#是微軟公司發布的一種面向對象的運行于.NET Framework之上的高級程序設計語言,它是微軟公司的最新成果。C#是一種安全的、穩定的、簡單的,由C和C++衍生出來的面向對象的編程語言,它在繼承C和C++強大功能的同時去掉了一些它們的復雜特性。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程的支持成為.NET開發的首選語言。

類:類是C#類型中最基礎的類型。類是一個數據結構,將字段和方法組合在一個單元中。類通過new關鍵字可以動態創建類實例(也就是對象)。

多態:多態是同一操作作用于不同的類的實例,不同的類將進行不同的解釋,最后產生不同的執行結果,為了實現多態,我們引入了抽象類。

繼承:繼承是指一個類能分享其它類的特征和行為。繼承必須滿足單根性原則,也就是說,一個子類只能有一個父類。

抽象類:抽象類和接口是C#語言中兩個重要的對象引用類型,是C#程序設計使用多態性的基礎。抽象類可以實現類的多態,抽象類中的方法沒有方法體代碼,抽象類中的方法必須在它非抽象類的子類中實現;抽象類通過abstract修飾,它內部的抽象方法也是通過abstract修飾的,在其子類中現實時必須用override修飾。

1 接口

接口提供了一組規范,一個標準。我們都知道,如果一個子類可以繼承父類的方法,就可以實現父類方法的功能。例如:B類繼承A類,他就可以繼承A類中的非私有的方法和屬性;由于C#中繼承的單根性,所以C#中繼承不允許多重繼承,假如這個子類(B類)要實現另外一個類C類中的方法,顯然通過繼承是沒法實現的,因為B類已經有A類這個父類了我們就不能再將C類設置為它的父類,因為我們的繼承必須滿足單根性;像這種情況應怎么辦呢?通過接口,接口技術可以讓類實現這種功能,因為在C#中一個類是可以實現多個接口的。

接口優勢簡介:

接口是對集成單根性的擴展。如上述B類繼承A類他就可以繼承A類中的非私有的方法和屬性;假如這個子類(B類)要實現另外一個類C類中的方法,顯然通過繼承是沒法實現的,我們知道一個類可以實現多個接口,因此我們可以將C類中的方法放到接口里不就可以實現了。

接口是一種規范和標準。一個類如果實現了一個接口,意味著這個類遵循了某種規范和約定。其它類可以通過這些規范和約定與他通信。

接口屏蔽了實現的細節。接口可以讓接口的使用者不必關心接口的實現者是如何實現接口的,例如:計算機不必關心USB鼠標的內部結構,只需要知道這個鼠標遵循USB接口標準,就可以正常的使用它了。同樣在程序中,一個類如果實現了IComparable接口。便可以讓這個類的對象進行排序。

接口的使用方便團隊協作開發。例如一個系統,加入要實現對象的排序功能,實現接口的人專門實現接口,而做排序功能的人專門做排序就可以了,如果一個系統都能夠做到這種設計,便可以更方便地開發團隊進行分工明確的協作開發。

接口成員的定義和類成員的定義類似,但有幾個重要區別:

1) 方法不允許使用修飾符(public、private、protected或internal),因為所有的接口成員都是公共的;

2) 接口成員不能包括代碼體;

3) 接口不能定義字段成員,成員不能用關鍵字static、virtal、abstract或sealed來定義;

4) 接口的所有方法在實現它的類中都必須重寫。

接口是對繼承單根性的擴展,接口使用方法與繼承一個類相似。接下來我們看兩個典型的接口案例,通過這兩個案例使大家更好的理解接口。

2 泛型接口IComparable的介紹及典型應用

類通過實現多個接口,可以說變相地實現了類的多重繼承,一個類如果實現了IComparable接口,我們就可以讓這個類的對象進行排序,但是我們知道通過實現IComparable接口的CompareTo()方法時,要對當前實例和另一個參數傳進來的實例作比較,這個方法的參數是object類型,所以要將它轉換為當前的實例類型:Student other = obj as Student,這樣的顯式類型轉換,不容易控制,容易出錯。

大家都知道泛型集合對于類型的約束非常嚴謹,在訪問他時也無需類型轉換,那么能不能使用泛型呢?答案是肯定的,IComparable接口,這個接口就是IComparable接口的泛型版本,IComparable接口是一個泛型接口,他和IComparable接口的功能是一樣的,實現這個泛型接口的類同樣支持排序。IComparable接口對于比較對象的類型有嚴格的約束,如果Student類實現了IComparable接口,就只允許比較Student類型的對象,同樣也不需要類型轉換,通過下面表格中代碼的比較相信大家對這兩個接口就更易理解了。可以看到,實現了IComparable接口后,CompareTo()方法必須傳遞Student對象,在比較大小時也無需類型轉換這樣定義對于類型的控制更加嚴格,增強了系統的安全性,代碼也變得非常簡潔。

3泛型接口IComparer 的介紹及典型應用

通過上邊泛型接口IComparable的介紹,大家已經知道了這個類實現了IComparable接口或者IComparable接口,在集合中它的對象就可以使用集合中的默認排序方法即sort()方法,但是這個默認的排序方式,是在實現接口的比較方法時指定的,也就是說它的排序方式一開始就確定了,如果你想按照其它的方式排序,就必須重新實現CompareTo()方法。那么有沒有更簡單的實現方法呢,答案是肯定的,那就是IComparer接口,俗稱比較器,這個泛型接口,他有一個為實現的方法 int Compare(Student x, Student y),它用于比較兩個對象的大小,按照指定的方式比較大小,然后傳入sort()方法,就能實現這宗比較方式的排序。

程序的實現思路是這樣的:

1) 在測試程序中定義反省集合List

2) 為每個按鈕提供一個排序方法,排序方法調用相應的sort()方法

3) 為每種排序方式絲線一個相應的比較器,為了方便我們將所有的比較器都放在一個類中

4) 將實現的比較器傳遞給sort()方法

5) 實現排序

通過上文簡單扼要的闡述,相信大家對C#中IComparer、IComparable這兩個典型而實用的接口已有一個更深的了解。

4 結束語

通過上文的闡述,相信您應該對C#面向對象編程中的接口及IComparable、IComparable這兩典型的泛型接口有了更清晰更準確的理解。在C#這個高雅的殿堂里,有著各種各樣璀璨的明珠,這個讓人嘆為觀止的技術和思想導致了Web開發領域發生了天翻地覆的變化。千里之行始于足下,用腳踏實地的態度,將這些知識點一個一個拿下,相信你就是明天的Anders Hejlsberg。

參考文獻:

[1] Watson K.C#入門經典[M].齊立波,譯.北京:清華大學出版社,2006.

[2] Robinson S,Nagel C.C#高級編程[M].李敏波,譯.3版.北京:清華大學出版社,2005.

[3] Schildt H.C#編程序起步[M].長春億特,譯.北京:人民郵電出版社,2006.

[4] Hejlsberg A,Wiltamuth S,Golde P. C#編程語言詳解[M].張曉坤,譚立平,車樹良,譯.北京:電子工業出版社,2004.

[5] 美國微軟公司.Visual C# 2005軟件的幫助信息[Z].2005.

[6] 李蘭友,楊曉光.Visual C#.NET程序設計[M].北京:北方交通大學出版社,2004.

[7] 王昊亮,李剛.Visual C#程序設計教程[M].北京:清華大學出版社,2003.

[8] 佟偉光.Visual Basic.NET實用教程[M].北京:電子工業出版社,2003.

主站蜘蛛池模板: 日本www色视频| 四虎成人在线视频| 亚洲三级成人| 欧美日在线观看| 国产午夜福利亚洲第一| 欧美h在线观看| 19国产精品麻豆免费观看| 亚洲成在线观看 | 日本高清有码人妻| 日韩精品成人网页视频在线| 无码AV高清毛片中国一级毛片| 色婷婷亚洲十月十月色天| 欧美激情视频二区| lhav亚洲精品| 久久综合九九亚洲一区| 精品国产成人a在线观看| 午夜激情婷婷| 亚洲精品无码久久毛片波多野吉| 网久久综合| 日本精品中文字幕在线不卡| 亚洲综合色区在线播放2019| 中文字幕精品一区二区三区视频| 波多野结衣中文字幕一区| 国产成人禁片在线观看| 五月激情婷婷综合| 一级毛片免费播放视频| 香蕉网久久| 亚洲av无码成人专区| www.youjizz.com久久| 亚洲αv毛片| 91亚洲国产视频| 大香伊人久久| 午夜毛片福利| 丰满人妻被猛烈进入无码| 日韩一级二级三级| 久久精品免费国产大片| 国产黄色爱视频| 国内精品免费| 99热这里只有精品在线播放| 欧美天天干| 成人毛片免费在线观看| 色噜噜中文网| 国产成人精品亚洲日本对白优播| 强奷白丝美女在线观看| 午夜丁香婷婷| 色综合中文综合网| 欧美一区精品| 国产在线一区视频| 高清无码一本到东京热| 亚洲色欲色欲www在线观看| 精品少妇三级亚洲| 亚洲精品免费网站| 人人艹人人爽| 五月激情综合网| 在线看片免费人成视久网下载| 97在线公开视频| 热久久综合这里只有精品电影| 扒开粉嫩的小缝隙喷白浆视频| 丰满少妇αⅴ无码区| 黄色三级网站免费| 色成人亚洲| 亚洲国产欧美国产综合久久| 久久精品这里只有精99品| 99re免费视频| 中文字幕佐山爱一区二区免费| 毛片网站观看| 国产在线观看成人91| 狼友视频一区二区三区| 91av成人日本不卡三区| 中文毛片无遮挡播放免费| 热re99久久精品国99热| 亚洲日韩Av中文字幕无码| 亚洲国产黄色| 女人一级毛片| 3D动漫精品啪啪一区二区下载| 青青草原国产一区二区| 99视频在线免费| 麻豆国产精品| 99re这里只有国产中文精品国产精品| 欧美笫一页| 日韩毛片在线视频| 潮喷在线无码白浆|