泛型接口

本主题概述跨泛型类型系列提供通用功能的泛型接口。

泛型接口

泛型接口为排序比较和相等比较以及由泛型集合类型共享的功能提供了与非泛型接口对应的类型安全的泛型接口。

注意注意

从 .NET Framework 4 版开始,有若干个泛型接口的类型参数被标记为协变或逆变,这为分配和使用实现这些接口的类型提供了更好的灵活性。请参见泛型中的协变和逆变

相等和排序比较

System 命名空间中,System.IComparable<T>System.IEquatable<T> 泛型接口与它们对应的非泛型接口一样,各自定义了用于排序比较和相等比较的方法。 类型实现这些接口来提供执行这些比较的能力。

System.Collections.Generic 命名空间中,IComparer<T>IEqualityComparer<T> 泛型接口为没有实现 System.IComparable<T>System.IEquatable<T> 泛型接口的类型提供了定义排序比较或相等比较的方式,并为实现了上述泛型接口的类型提供了重新定义这些关系的方式。 这些接口由许多泛型集合类的方法和构造函数使用。 例如,通过将泛型 IComparer<T> 对象传递给 SortedDictionary<TKey, TValue> 类的构造函数,可以为没有实现泛型 System.IComparable<T> 的类型指定排序顺序。 存在 Array.Sort 泛型静态方法和 List<T>.Sort 实例方法的重载以用于使用泛型 IComparer<T> 实现排序数组和列表。

Comparer<T>EqualityComparer<T> 泛型类为 IComparer<T>IEqualityComparer<T> 泛型接口的实现提供基类,还通过它们各自的 Comparer<T>.DefaultEqualityComparer<T>.Default 属性提供默认的排序和相等比较。

集合功能

ICollection<T> 泛型接口是泛型集合类型的基本接口。 它提供了用于添加、移除、复制和枚举元素的基本功能。 ICollection<T> 继承自泛型 IEnumerable<T> 和非泛型 IEnumerable

IList<T> 泛型接口使用索引检索的方法扩展 ICollection<T> 泛型接口。

IDictionary<TKey, TValue> 泛型接口使用键控检索的方法扩展 ICollection<T> 泛型接口。 .NET Framework 基类库中的泛型字典类型还实现非泛型 IDictionary 接口。

IEnumerable<T> 泛型接口提供泛型枚举器结构。 泛型枚举数实现的 IEnumerator<T> 泛型接口继承非泛型 IEnumerator 接口;MoveNextReset 成员(不依赖于类型参数 T)只出现在非泛型接口上。 这意味着非泛型接口的任何使用者还可以使用泛型接口。

请参见

参考

System.Collections.Generic

System.Collections.ObjectModel

概念

.NET Framework 中的泛型

.NET Framework 中的泛型集合

用于操作数组和列表的泛型委托

泛型的优点和限制

泛型中的协变和逆变