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)

Параметры типа

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> при проверке на равенство в таких методах как Contains, IndexOf, LastIndexOf, и 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_Equality и op_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) поля типов значений и использует отражение для сравнения двух значений на равенство.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. Два человека, с тем же именем же сортировка, но не и то же лицо.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.

Применяется к

Дополнительно