共用方式為


常用的集合型別

更新:2007 年 11 月

集合型別是資料集合的一般變形,例如雜湊表、佇列、堆疊、字典和清單。

集合是以 ICollection 介面、IList 介面、IDictionary 介面或這些介面的泛型版本為基礎。IList 介面和 IDictionary 介面都衍生自 ICollection 介面;因此所有集合都是直接或間接以 ICollection 介面為基礎。在以 IList 介面為基礎的集合 (例如 ArrayArrayListList<T>) 或直接以 ICollection 介面為基礎的集合 (例如 QueueStackLinkedList<T>) 中,每個元素都只含一個值。在以 IDictionary 介面 (例如 HashtableSortedList 類別,或者 Dictionary<TKey, TValue>SortedList<TKey, TValue> 泛型類別) 為基礎的集合中,每個元素都包含一個索引鍵和一個值。KeyedCollection<TKey, TItem> 類別是唯一的,因為它是一個數值清單,且數值中內嵌有索引鍵,因此它的行為既像清單也像字典。

泛型集合是強型別的最佳解決方案。但若您的語言不支援泛型,System.Collections 命名空間 (Namespace) 便會包含基底集合,例如 CollectionBaseReadOnlyCollectionBaseDictionaryBase,這些都是抽象基底類別,可以擴充來建立強型別 (Strongly Typed) 的集合類別。

集合可以變動,取決於如何儲存元素、如何將它們排序、如何執行搜尋,以及如何進行比較。Queue 類別和 Queue<T> 泛型類別提供先進先出清單,而 Stack 類別和 Stack<T> 泛型類別則提供後進先出清單。SortedList 類別和 SortedList<TKey, TValue> 泛型類別提供 Hashtable 類別和 Dictionary<TKey, TValue> 泛型類別的排序版本。HashtableDictionary<TKey, TValue> 的元素只能藉元素的索引鍵來存取,但 SortedListKeyedCollection<TKey, TItem> 的元素則可藉索引鍵或元素索引其中之一來存取。所有集合中的索引都是以零起始,除了 Array 之外,它允許不是以零起始的陣列。

只要物件型別實作 IEnumerableIEnumerable<T>,LINQ to Objects 功能就可讓您使用 LINQ 查詢以存取記憶體中的物件。LINQ 查詢提供一般模式以存取資料,比標準的 foreach 迴圈 (Loop) 更精簡、可讀性更高,並提供篩選、排序和群組功能。LINQ 查詢也可以提升效能。如需詳細資訊,請參閱 LINQ to Objects

在本節中

參考

相關章節

  • 集合和資料結構
    討論 .NET Framework 中可用的各種集合型別,包括堆疊、佇列、清單、陣列和結構。

  • .NET Framework 中的泛型
    描述泛型功能,其中包括 .NET Framework 所提供的泛型集合、委派和介面。此外,還提供連結以連至 C#、Visual Basic 和 Visual C++ 的功能說明文件,以及連至像是反映 (Reflection) 等支援技術的說明文件。