共用方式為


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 方法,這個方法會決定實作型別實例的相等性。

在測試 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)

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

適用於

另請參閱