IEquatable<T> 介面

定義

定義通用的方法,實值類型或類別會實作這個方法,以建立特定類型的方法來判斷執行個體是否相等。

generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)

類型參數

T

要比較之物件的類型。

衍生

範例

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

備註

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

注意

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

這類 IEquatable<T> 泛型集合物件會使用 介面,例如 Dictionary<TKey,TValue>List<T>LinkedList<T> 測試 、 IndexOfLastIndexOfRemove 這類方法 Contains 是否相等。 它應該針對可能儲存在泛型集合中的任何物件實作。

給實施者的注意事項

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

如果您實作 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)

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

適用於

另請參閱