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> Contains IndexOf するときに LastIndexOf 使用されます Remove 。 これは、ジェネリック コレクションに格納される可能性があるすべてのオブジェクトに対して実装する必要があります。

注意 (実装者)

インターフェイスの type パラメーターを 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) は値型をボックス化し、リフレクションを使用して 2 つの値の等値を比較します。 の実装と のオーバーライドの Equals(T) 両方で、一貫 Equals(Object) した結果が返される必要があります。

を実装する場合は、型のインスタンスを順序付けまたは並べ替えできる場合 IEquatable<T> IComparable<T> も 実装する必要があります。 型が を実装している場合 IComparable<T> は、ほとんどの場合も を実装します IEquatable<T>

型が順序関係をサポートする設計がありますが、等値は順序関係とは異なる場合があります。 アルファベット順 Person に並べ替えるクラスを考え出します。 同じ名前を持つ 2 人のユーザーが同じ並べ替えを行いますが、同じ人物ではありません。

メソッド

Equals(T)

現在のオブジェクトが、同じ型の別のオブジェクトと等しいかどうかを示します。

適用対象

こちらもご覧ください