IEquatable<T> 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義實作實作實值型別或類別的一般化方法,以建立型別特定的方法,以判斷實例的相等性。
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 方法,這個方法會決定實作型別實例的相等性。
在測試 Contains
、IndexOf
、LastIndexOf
和 Remove
等方法時,泛型集合物件會使用 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_Equality
和 op_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) |
指出目前的物件是否等於相同類型的另一個物件。 |