System.Collections.Generic 中的接口和类型区分

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 命名空间。这可以通过在文件的顶部添加以下指令来完成:

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值