C#中的集合有幾種?


C#中的集合有幾種? 
Array 

ArrayList

 List<T> 

Stack<T> 

Queue<T> 

Dictionary<K,V> 

HashTable   
集合,表示可以通過遍歷每個元素來訪問的一組對象(特別是可使用foreach循環訪問) 一個集合包括多個元素,即有一個集合類對象和N個元素對象 
 
因為任何集合類都實現了IEnumerable接口,所以任何集合類對象都有一個
GetEnumerator()方法,該方法可以返回一個實現了 IEnumerator接口的對象,這個返回的IEnumerator對象既不是集合類對象,也不是集合的元素類對象,它是一個獨立的類對象。通過這個對象,可以遍歷訪問集合類對象中的每一個元素對象  
如果集合類是用戶自定義的集合類,則用戶必須實現它的GetEnumerator()方法,否則不能使用循環。當然,與這個自定義集合類對應的IEnumerator類(實現了該接口的類),也要自定義一個才行  
比如,ArrayList集合類對應的IEnumerator是 ArrayListEnumeratorSimple             Array集合類對應的IEnumerator是 SZArrayEnumerator       (這兩個類在.net framework類庫文檔(msdn)中都沒有介紹)  
1.System.Colloctions中表示集合的行為的接口有: 1)ICollection 
定義所有集合的大小、枚舉數和同步方法。派生於IEnumerable 它定義了集合類最基本的行為,所有的集合類都實現了這個接口(基接口) 但是它的行為太過基本:主要就是一個Count屬性,單獨實現它沒有太大意義  
2)IEnumerable 
公開枚舉數,該枚舉數支持在集合上進行簡單迭代 
它只有一個方法 GetEnumerator(),該方法可以返回一個IEnumerator接口,通過它可以遍歷集合 
基本上所有的集合類都實現了這個接口  3)IList 
IList實現是可排序且可按照索引訪問其成員的值的集合,它本身實現了ICollection和IEnumerable接口 
是所有列表的抽象基類。IList 實現有三種類別:只讀、固定大小、可變大小。 

 

4)IDictionary 
IDictionary實現是鍵/值對的集合,它本身實現了ICollection和IEnumerable接口 是鍵/值對的集合的基接口。IDictionary 實現有三種類別:只讀、固定大小、可變大小。 IDictionary可稱為字典、映射或散列表,它根據鍵(任意類型)來訪問值   
2.System.Collections中可以直接使用的集合類有: 1)ArrayList 
實現了接口:IList、ICollection、IEnumerable 
只要集合未被修改,ArrayList 就可安全地同時支持多個讀取器 
隨着向 ArrayList 中添加元素,容量通過重新分配按需自動增加(2倍增加) 如果需要建立一個對象數組,但不能預先知道數組的大小,就可以使用ArrayList 
ArrayList把所有元素都當作object對象引用,因而在訪問ArrayList的元素時要進行類型轉換 
優點:動態改變大小、靈活方便的插入和刪除元素、可排序 缺點:插入時性能不如數組、不是強類型的  
2)BitArray 
實現了接口:ICollection、IEnumerable 管理位值的壓縮數組。  
3)Hashtable 
實現了接口:IDictionary、ICollection、IEnumerable 
可以向Hashtable中自由添加和刪除元素,有些像ArrayList,但沒有那么大的性能開銷  
4)SortedList 
實現了接口:IDictionary、ICollection、IEnumerable 
SortedLIst兼顧了ArrayList和Hashtable的優點,可按鍵值來排序  5)Queue 
實現了接口:ICollection、IEnumerable Queque是隊列,先進先出的訪問各個元素 
可以調用Queque對象的GetEnumerator()方法,得到IEnumerator對象,來遍歷隊列中的各個元素  6)Stack 
實現了接口:ICollection、IEnumerable Stack是堆棧,后進先出的訪問各個元素 
可以調用Stack對象的GetEnumerator()方法,得到IEnumerator對象,來遍歷堆棧中的各個元素  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM