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>、 などのList<T>Dictionary<TKey,TValue>LinkedList<T>メソッドContainsIndexOfLastIndexOfRemoveで等しいかどうかをテストするときに、 などのジェネリック コレクション オブジェクトによって使用されます。 ジェネリック コレクションに格納される可能性があるオブジェクトに対して実装する必要があります。

注意 (実装者)

インターフェイスの型パラメーターを、 IEquatable<T> このインターフェイスを実装している型に置き換えます。

を実装 IEquatable<T>する場合は、 の基底クラスの Equals(Object) 実装もオーバーライドして GetHashCode() 、その動作が メソッドの動作と一致するようにする Equals(T) 必要があります。 をオーバーライド Equals(Object)する場合、オーバーライドされた実装は、クラスの静的 Equals(System.Object, System.Object) メソッドの呼び出しでも呼び出されます。 さらに、 演算子と op_Inequality 演算子をオーバーロードするop_Equality必要があります。 これにより、等しいかどうかのすべてのテストで一貫した結果が返されます。

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)

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

適用対象

こちらもご覧ください