閱讀英文版本

分享方式:


IEquatable<T> 介面

定義

定義實作實作實值型別或類別的一般化方法,以建立型別特定的方法,以判斷實例的相等性。

C#
public interface IEquatable<T>

類型參數

T

要比較的物件類型。

衍生

範例

請參閱 IEquatable<T>.Equals 方法的範例。

備註

這個介面是由可等號值的類型實作(例如,數值和字串類別)。 實值型別或類別會實作 Equals 方法,以建立適合判斷實例相等的類型特定方法。

備註

IComparable<T> 介面會定義 CompareTo 方法,這個方法會決定實作型別實例的排序順序。 IEquatable<T> 介面會定義 Equals 方法,這個方法會決定實作型別實例的相等性。

在測試 ContainsIndexOfLastIndexOfRemove等方法時,泛型集合物件會使用 IEquatable<T> 介面,例如 Dictionary<TKey,TValue>List<T>LinkedList<T>。 它應該針對任何可能儲存在泛型集合中的對象來實作。

給實施者的注意事項

IEquatable<T> 介面的類型參數取代為實作這個介面的類型。

如果您實作 IEquatable<T>,您也應該覆寫 Equals(Object)GetHashCode() 的基類實作,使其行為與 Equals(T) 方法的行為一致。 如果您覆寫 Equals(Object),則覆寫的實作也會在呼叫 類別上的靜態 Equals(System.Object, System.Object) 方法時呼叫。 此外,您應該多載 op_Equalityop_Inequality 運算符。 這可確保所有相等測試都會傳回一致的結果。

如需覆寫 Equals(Object)的相關信息,請參閱 Equals(Object)

針對實值型別,您應該一律實作 IEquatable<T> 並覆寫 Equals(Object),以提升效能。 Equals(Object) 方塊實值型別,並依賴反映來比較兩個值是否相等。 實作 Equals(T) 和覆寫 Equals(Object) 應該都會傳回一致的結果。

如果您實作 IEquatable<T>,則如果您類型的實例可以排序或排序,則也應該實作 IComparable<T>。 如果您的類型實作 IComparable<T>,您幾乎一律也會實作 IEquatable<T>

請注意,有些設計類型支援順序關聯,但相等可能與排序關聯不同。 請考慮依字母順序排序的 Person 類別。 兩個同名的人排序相同,但不是同名的人。

方法

Equals(T)

指出目前的物件是否等於相同類型的另一個物件。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另請參閱