[C#]C#學習筆記-介面,集合與泛型

來源:互聯網
上載者:User

C#學習筆記-介面,集合與泛型

羅朝輝(http://www.cnblogs.com/kesalin/)

《C#與.NET進階程式設計》讀書筆記

 

介面

1, 介面可以被定義為抽T象成員T的集合。介面可以包含方法,屬性,事件以及索引器。實現介面是一個要麼全要要麼全不要的問題,不能部分實現介面的方法。

2,使用 as 關鍵字擷取介面應用。

Person p = new Person("LiLai");
IStudent s = p as IStudent;

if (s != NULL)
Console.WriteLine("{0} is a student", p.Name);
else
Console.WriteLine("{0} is not a student", p.Name);

我們也可以使用 is 來判斷一個對象是否實現了某個介面:

if (p is IStudent)
....
else
...

3,介面可以如同對象一樣被當做參數,傳回值使用。

4,通過明確介面實作,解決實現多個介面的同名方法引起的命名衝突。顯式實現的成員是自動私人的,所以使用這些成員的時候必須將對象顯式轉換為對應的介面。

5,介面支援繼承,並支援多重繼承。

6,枚舉對象的構建   

如果自訂類型要和C#的foreach關鍵字一起使用的話,容器就需要定義一個名為GetEnumerator()的方法,它由IEnumerator介面類型來定製。通常這個方法的實現只是交給儲存子物件的內部成員,然而,我們也可以使用yield return文法來提供多個“命名迭代器”
方法。 

7,回調介面

回調介面通常不會由對擷取事件感興趣的對象直接實現,而是由一個叫做接收器對象的輔助對象來實現。事件的寄件者會在合適的情況下調用接收器。 回調介面很有點像ObjC中的 delegate。

 

集合和泛型

1,最基礎的容器就是 System.Array,然而我們不能在增加或刪除元素時自動調整Array的大小。我們可以利用定義在System.Collections命名空間中的介面ICollection,IComparer,IDictionary,IDictionaryEnumerator,IEnumerable,IEnumerator,IHashCodeProvider,IList等來實現更靈活的容器,或使用System.Collections.Generic命名空間的泛型容器類型Collection<T>,Comparer<T>, Dictionary<TKey, TValue>, List<T>, Queue<T>, SortedDictionary<T>, Stack<T>, LinkedList<T>, ReadOnlyCollection<T>等。

2,裝箱和撤箱
.NET平台支援兩大類的資料類型:實值型別和參考型別。簡單來說,裝箱就是把實值型別轉換為參考型別,反之就是撤箱。具體點說:裝箱就是把變數儲存在System.Object中,將實值型別顯示轉換為相應的參考型別;而撤箱就是把儲存在對象引用中的值轉換回棧上的相應實值型別。撤箱必須回到合適的資料類型,否則會引發InvalidCastException異常。

裝箱和撤箱能方便我們往容器中存取實值型別,但是也是有成本的,因為裝箱需要建立新對象,撤箱時需要銷毀對象,而且強制轉換也可能引起型別安全問題。因此我們常用泛型容器來解決此類問題。

3,C#中泛型基本使用與C++相同。C#泛型中引進了 default 關鍵字,以用於設定型別參數的預設值,數值的預設值為0,參考型別的預設值為null,一個結構的欄位被設為0或null。

4,C#中使用 where 關鍵字來約束型別參數,where 可以用來控制型別參數的各種特性,但目前還不支援運算子約束。

5,泛型類可以作為其他類的基類,它可以定義許多虛方法或抽象方法,但對泛型類的衍生類別有一些限制:衍生類別必須指定一個型別參數,如果基類定義了泛型虛方法或抽象方法,衍生類別型必須使用指定型別參數重寫泛型方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.