Share via


泛型介面

本主題將提供泛型介面的概觀,該介面提供各種泛型型別系列的一般功能。

泛型介面

泛型介面為非泛型介面提供了型別安全的對應項目,以便進行排序及相等比較,以及提供泛型集合型別所共用的功能。

注意事項注意事項

從 .NET Framework 4 版 開始,數個泛型介面的型別參數標示為 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>.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 介面,而且不依賴型別參數 T 的 MoveNextReset 成員只會出現在非泛型介面上。 這表示,非泛型介面的任何消費者也可以使用此泛型介面。

請參閱

參考

System.Collections.Generic

System.Collections.ObjectModel

概念

.NET Framework 中的泛型

.NET Framework 中的泛型集合

管理陣列和清單的泛型委派

泛型的優點和限制

泛型中的共變數和反變數