本文提供的概觀。NET 的泛型介面,可在泛型型別系列之間提供通用功能。
泛型介面為非泛型介面提供類型安全的對應,以便用於排序和等值比較,以及泛型集合類型共用的功能。 .NET 7 引進類似數字類型的泛型介面,例如 System.Numerics.INumber<TSelf>。 這些介面可讓您定義提供數學功能的泛型方法,其中泛型型別參數受限於實作泛型數值介面的類型。
備註
數個泛型介面的類型參數會標示為 covariant 或 contravariant,為指派和使用實作這些介面的類型提供更大的彈性。 如需詳細資訊,請參閱 共變數和反變數。
相等性與順序比較
在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>.Default和EqualityComparer<T>.Default屬性提供預設排序和相等比較。
集合功能
泛 ICollection<T> 型介面是泛型集合類型的基本介面。 它提供新增、移除、複製和列舉元素的基本功能。 ICollection<T> 繼承自泛型 IEnumerable<T> 和非泛型 IEnumerable。
泛型介面IList<T>擴充了具有索引擷取方法的泛型介面ICollection<T>。
泛型介面IDictionary<TKey,TValue>透過方法擴充ICollection<T>泛型介面,使其具備索引鍵擷取功能。 .NET 基類連結庫中的泛型字典類型也會實作非泛型 IDictionary 介面。
IEnumerable<T> 泛型介面提供泛型列舉器結構。 IEnumerator<T> 泛型列舉值所實作的泛型介面會繼承非泛型 IEnumerator 介面,而不依賴型別參數 MoveNext 的 Reset 和
T成員,只會出現在非泛型介面上。 這表示非泛型介面的任何取用者也可以取用泛型介面。
數學功能
.NET 7 在命名空間中 System.Numerics 引進泛型介面,描述類似數位的類型及其可用的功能。 .NET 基類庫提供的 20 個數值類型,例如 Int32 和 Double,已更新為實作這些介面。 這些介面最突出的是 INumber<TSelf>,其大致對應到「實數」數位。
如需這些介面的詳細資訊,請參閱 泛型數學。