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

注意 (実装者)

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

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

オーバーライドの詳細については、以下を Equals(Object)参照してください Equals(Object)

値型の場合は、パフォーマンスを向上させるために、常に実装 IEquatable<T> とオーバーライド Equals(Object) を行う必要があります。 Equals(Object) は値型をボックス化し、リフレクションに依存して 2 つの値の等価性を比較します。 実装とオーバーライドのEquals(Object)両方がEquals(T)一貫した結果を返す必要があります。

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

型が注文関係をサポートするデザインもありますが、等しい場合は順序関係とは異なる場合があることに注意してください。 アルファベット順に Person 並べ替えるクラスを考えてみましょう。 同じ名前の 2 人は同じ並べ替えを行いますが、同じ人物ではありません。

メソッド

Equals(T)

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

適用対象

こちらもご覧ください