壹個集合包括多個元素,即有壹個集合類對象和n個元素對象。
-
因為任何集合類都實現IEnumerable接口,所以任何集合類對象都有GetEnumerator()方法,該方法可以返回實現IEUMERATOR接口的對象。返回的IEUMERATOR對象既不是集合類對象,也不是集合的元素類對象,而是壹個獨立的類對象。通過這個對象,您可以遍歷集合類對象中的每個元素對象。
如果集合類是用戶定義的,用戶必須實現它的GetEnumerator()方法,否則不能使用循環。當然,這個自定義集合類對應的IEnumerator類(實現接口的類)也必須自定義。
例如,ArrayList集合類對應的IEnumerator是ArrayListEnumeratorSimple。
數組集合類對應的IEnumerator是SZArrayEnumerator。
(中沒有介紹這兩個類。Net框架類庫文檔(msdn)。)
-
在1。表示集合行為的接口有:
1)I集合
定義所有集合的大小、枚舉數和同步方法。從IEnumerable派生
它定義了集合類最基本的行為,所有的集合類都實現了這個接口(基接口)。
但是它的行為太基礎了:它主要是壹個Count屬性,所以單獨實現它沒有太大意義。
2)IEnumerable
公開支持對集合進行簡單叠代的枚舉數。
它只有壹個方法GetEnumerator(),該方法可以返回壹個IEnumerator接口,通過該接口可以遍歷集合。
基本上所有的集合類都實現了這個接口。
3)伊利斯特
IList實現是壹組可以按索引排序和訪問的值,它本身實現了ICollection和IEnumerable接口。
是所有列表的抽象基類。IList實現有三種類型:只讀、固定大小和可變大小。
4)字典
IDictionary實現是鍵/值對的集合,它本身實現ICollection和IEnumerable接口。
是鍵/值對集合的基接口。IDictionary實現有三種類型:只讀、固定大小和可變大小。
IDictionary可以稱為字典、映射或哈希表,它根據鍵(任何類型)訪問值。
-
2.集合類可以直接在2。系統。集合是:
1)數組列表
實現的接口:IList,ICollection,IEnumerable。
只要集合不被修改,ArrayList就可以安全地同時支持多個讀取器。
隨著元素被添加到ArrayList中,容量會根據需要通過重新分配自動增加(增加2倍)。
如果需要創建壹個對象的數組,但是無法提前知道數組的大小,可以使用ArrayList。
ArrayList將所有元素都作為object對象引用,所以在訪問ArrayList的元素時需要進行類型轉換。
優點:大小動態變化,靈活方便的插入和刪除元素,可排序。
缺點:插入時性能不如數組,且不是強類型。
2)BitArray
實現的接口:ICollection,IEnumerable。
管理位值的壓縮數組。
3)哈希表
實現的接口:IDictionary、ICollection、IEnumerable。
妳可以自由地在Hashtable中添加和刪除元素,有些元素類似於ArrayList,但是沒有那麽多的性能開銷。
4)排序列表
實現的接口:IDictionary、ICollection、IEnumerable。
SortedLIst兼顧了ArrayList和Hashtable的優點,可以按鍵值排序。
5)排隊
實現的接口:ICollection,IEnumerable。
Queque是壹個隊列,它先入先出地訪問每個元素。
您可以調用Queque對象的GetEnumerator()方法,讓IEnumerator對象遍歷隊列中的元素。
6)堆棧
實現的接口:ICollection,IEnumerable。
Stack是壹個棧,每個元素都是後進先出訪問的。
您可以調用Stack對象的GetEnumerator()方法,讓IEnumerator對象遍歷堆棧中的各個元素。
-
3.上述集合類都是通用集合類,接受的元素多為對象類型。當壹個物體被放入時,
創建集合後,原始類型信息會丟失,也就是說,這些通用集合類不是強類型的。
解決方案是使用強類型集合類。
系統下的CollectionBase、DictionaryBase、ReadOnlyCollectionBase類。集合命名空間。
系統下的壹些類。集合。專門的命名空間可以滿足要求,並可以直接使用或繼承。如果您認為某篇文章侵犯了您的權利或他人的權利,請聯系我們。