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>がこのインターフェイスを実装している型を持つインターフェイスです。Replace the type parameter of the IEquatable<T> interface with the type that is implementing this interface. 実装する場合IEquatable<T>の基本クラスの実装をオーバーライドすることも必要があります。Equals(Object)GetHashCode()の動作の一貫性のあるあるように、Equals(T)メソッド。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. オーバーライドする場合Equals(Object)、静的な呼び出しでオーバーライドされた実装が呼び出されますもEquals(System.Object, System.Object)クラスのメソッド。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. さらに、オーバー ロードする必要があります、op_Equalityop_Inequality演算子。In addition, you should overload the op_Equality and op_Inequality operators. これにより、すべてのテストが等しいかどうかが一貫性のある結果を返します。This ensures that all tests for equality return consistent results.

オーバーライドについてEquals(Object)を参照してください、Equals(Object)記事。For information on overriding Equals(Object), see the Equals(Object) article.

値の型を実装することを常にIEquatable<T>オーバーライドとEquals(Object)パフォーマンスが向上します。For a value type, you should always implement IEquatable<T> and override Equals(Object) for better performance. Equals(Object) ボックスの値型と等しいかどうかの 2 つの値を比較するためにリフレクションに依存しています。Equals(Object) boxes value types and relies on reflection to compare two values for equality. 両方の実装Equals(T)のオーバーライドとEquals(Object)一貫性のある結果を返す必要があります。Both your implementation of Equals(T) and your override of Equals(Object) should return consistent results. 実装する場合IEquatable<T>、実装する必要がありますもIComparable<T>型のインスタンスの順序付けまたは並べ替えを指定できる場合。If you implement IEquatable<T>, you should also implement IComparable<T> if instances of your type can be ordered or sorted. 型が実装されている場合IComparable<T>、実装することもほぼ常にIEquatable<T>します。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. 検討してください、`Person`場所をアルファベット順に並べ替えクラス。Consider a `Person` class where you sort alphabetically. 同じ名前の 2 人のユーザーは同じですが、並べ替えが、同じユーザーではありません。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.