IEquatable<T> IEquatable<T> IEquatable<T> IEquatable<T> Interface


インスタンスの等価性判断を目的とする型固有のメソッドを作成するために値型またはクラスで実装する、汎用のメソッドを定義します。 Defines a generalized method that a value type or class implements to create a type-specific method for determining equality of instances.

generic <typename T>
public interface class IEquatable
public interface IEquatable<T>
type IEquatable<'T> = interface
Public Interface IEquatable(Of T)

比較するオブジェクトの型。 The type of objects to compare.


例をご覧ください、IEquatable<T>.Equalsメソッド。See the example for the IEquatable<T>.Equals method.


このインターフェイスは型 (クラスの例では、数値と文字列) の値を処理できます。This interface is implemented by types whose values can be equated (for example, the numeric and string classes). 値型またはクラスで実装、Equalsインスタンスの等価性を判断するのに適した種類に固有のメソッドを作成します。A value type or class implements the Equals method to create a type-specific method suitable for determining equality of instances.


IComparable<T>インターフェイスを定義、CompareToメソッドを実装する型のインスタンスの並べ替え順序を決定します。The IComparable<T> interface defines the CompareTo method, which determines the sort order of instances of the implementing type. IEquatable<T>インターフェイスを定義、Equalsメソッドを実装する型のインスタンスが等しいかどうかを判断します。The IEquatable<T> interface defines the Equals method, which determines the equality of instances of the implementing type.

IEquatable<T>インターフェイスがなどのジェネリック コレクション オブジェクトによって使用されますDictionary<TKey,TValue>List<T>、およびLinkedList<T>などのメソッドでは、等しいかどうかをテストするときにContainsIndexOfLastIndexOf、およびRemoveします。The IEquatable<T> interface is used by generic collection objects such as Dictionary<TKey,TValue>, List<T>, and LinkedList<T> when testing for equality in such methods as Contains, IndexOf, LastIndexOf, and Remove. ジェネリック コレクション内に保存されている任意のオブジェクトを実装します。It should be implemented for any object that might be stored in a generic collection.

注意 (実装者)

型パラメーターを置き換える、IEquatable<T>がこのインターフェイスを実装している型を持つインターフェイスです。実装する場合IEquatable<T>の基本クラスの実装をオーバーライドすることも必要があります。Equals(Object)GetHashCode()の動作の一貫性のあるあるように、Equals(T)メソッド。オーバーライドする場合Equals(Object)、静的な呼び出しでオーバーライドされた実装が呼び出されますもEquals(System.Object, System.Object)クラスのメソッド。さらに、オーバー ロードする必要があります、op_Equalityop_Inequality演算子。これにより、すべてのテストが等しいかどうかが一貫性のある結果を返します。


値の型を実装することを常にIEquatable<T>オーバーライドとEquals(Object)パフォーマンスが向上します。Equals(Object)値の型をボックスし、2 つの値が等しいかどうかを比較するためにリフレクションに依存しています。両方の実装Equals(T)のオーバーライドとEquals(Object)一貫性のある結果を返す必要があります。実装する場合IEquatable<T>、実装する必要がありますもIComparable<T>型のインスタンスの順序付けまたは並べ替えを指定できる場合。型が実装されている場合IComparable<T>、実装することもほぼ常にIEquatable<T>.

順序関係をサポートする型が等しいかどうかは、注文のリレーションシップから異なる場合がある一部のデザインがあることに注意してください。検討してください、Person場所をアルファベット順に並べ替えクラス。同じ名前の 2 人のユーザーは同じですが、並べ替えが、同じユーザーではありません。

Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. If you implement IEquatable<T>, you should also override the base class implementations of Equals(Object) and GetHashCode() so that their behavior is consistent with that of the Equals(T) method. If you do override Equals(Object), your overridden implementation is also called in calls to the static Equals(System.Object, System.Object) method on your class. In addition, you should overload the op_Equality and op_Inequality operators. This ensures that all tests for equality return consistent results.

For information on overriding Equals(Object), see the Equals(Object) article.

For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object) boxes value types and relies on reflection to compare two values for equality. Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. If your type implements IComparable<T>, you almost always also implement IEquatable<T>.

Note that there are some designs where a type supports an order relation, but equality may be distinct from an ordering relation. Consider a Person class where you sort alphabetically. Two people with the same name sort the same, but are not the same person.


Equals(T) Equals(T) Equals(T) Equals(T)

現在のオブジェクトが、同じ型の別のオブジェクトと等しいかどうかを示します。 Indicates whether the current object is equal to another object of the same type.