System.Collections.Generic 命名空間包含了許多與泛型集合相關的接口和類。這些接口定義了一組通用的集合行為,而具體的實現(如 List、Dictionary<TKey, TValue> 等)則遵循這些接口,從而提供具體的集合功能。以下是 System.Collections.Generic 中一些重要的接口及其含義:
IEnumerable
允許對象作為一個 IEnumerator 枚舉器來遍歷集合中的元素。這是所有泛型集合類必須實現的基本接口,用于支持 foreach 循環。
ICollection
繼承自 IEnumerable,表示一個包含元素的泛型集合,這些元素是強類型的,并提供了對集合中元素數量的訪問以及添加、刪除和清空集合成員的方法。
IList
繼承自 ICollection,表示一個有序的集合,可以通過索引訪問元素,并且支持在集合中的特定位置插入和刪除元素。
IReadOnlyCollection
表示一個只讀的泛型集合,只能訪問集合中的元素數量,但不能修改集合。這是為了支持只讀集合而設計的。
IReadOnlyList
繼承自 IReadOnlyCollection,表示一個有序的、只讀的泛型集合,可以通過索引訪問元素,但不能修改集合。
IDictionary<TKey, TValue>
表示一個鍵值對的集合,其中每個鍵都是唯一的,并且關聯一個值。提供了添加、檢索、更新和刪除鍵值對的方法。
IEnumerator
暴露一個對象,該對象包含遍歷集合所需的方法。IEnumerator 通常由集合的 GetEnumerator() 方法返回,用于支持 foreach 循環和其他枚舉操作。
IEqualityComparer
表示一個泛型比較器,用于確定兩個對象是否相等。這通常用于自定義集合中元素的比較方式,例如 HashSet 和 #Dictionary<TKey, TValue>。
IComparer
表示一個泛型比較器,用于對元素進行排序。與 IEqualityComparer 不同,IComparer 專注于排序邏輯,而不是相等性比較。
這些接口為泛型集合類提供了標準化的行為,使得不同類型的集合(如列表、字典、隊列等)能夠以一致的方式被操作和處理。通過實現這些接口,集合類可以與其他需要這些接口的庫和框架進行交互,增強了代碼的復用性和可維護性。
以下是一些 System.Collections.Generic 命名空間中的常用集合類型:
List - 表示一個可變大小的數組,可以動態地添加或刪除元素。
csharp
List numbers = new List { 1, 2, 3, 4, 5 };
Dictionary<TKey, TValue> - 表示一個鍵/值對的集合,其中每個鍵都是唯一的。
csharp
Dictionary<string, int> ages = new Dictionary<string, int> { { “Alice”, 30 }, { “Bob”, 25 } };
HashSet - 表示一個集合,它不允許重復的元素。
csharp
HashSet uniqueNumbers = new HashSet { 1, 2, 2, 3, 4, 4, 5 }; // 重復的元素會被忽略
LinkedList - 表示一個雙向鏈表。
csharp
LinkedList linkedList = new LinkedList();
linkedList.AddLast(1);
linkedList.AddLast(2);
Queue - 表示一個先進先出(FIFO)的集合。
csharp
Queue queue = new Queue();
queue.Enqueue(1);
queue.Enqueue(2);
int firstItem = queue.Dequeue(); // firstItem 現在是 1
Stack - 表示一個后進先出(LIFO)的集合。
csharp
Stack stack = new Stack();
stack.Push(1);
stack.Push(2);
int topItem = stack.Pop(); // topItem 現在是 2
SortedDictionary<TKey, TValue> 和 SortedList<TKey, TValue> - 表示一個根據鍵排序的字典或列表。
SortedSet - 表示一個排序的集合,其中元素唯一且按升序排序。
使用這些集合類型時,你需要使用 System.Collections.Generic 命名空間。這可以通過在文件的頂部添加以下指令來完成: