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> проверке на равенство в таких методах, как Contains, IndexOf, LastIndexOfи Remove. Он должен быть реализован для любого объекта, который может храниться в универсальной коллекции.

Примечания для тех, кто реализует этот метод

Замените параметр IEquatable<T> type интерфейса типом, реализующим этот интерфейс.

При реализации IEquatable<T>необходимо также переопределить реализации Equals(Object) базового класса и GetHashCode() , чтобы их поведение соответствовало Equals(T) поведению метода . Если переопределить Equals(Object), переопределенная реализация также вызывается в вызовах статического Equals(System.Object, System.Object) метода в классе . Кроме того, следует перегружать операторы op_Equality и op_Inequality . Это гарантирует, что все тесты на равенство возвращают согласованные результаты.

Сведения о переопределении Equals(Object)см. в разделе Equals(Object).

Для типа значения всегда следует реализовывать IEquatable<T> и переопределять для Equals(Object) повышения производительности. Equals(Object) Поля типы значений и используют отражение для сравнения двух значений на равенство. Equals(T) Реализация и переопределение должны возвращать согласованные Equals(Object) результаты.

При реализации IEquatable<T>следует также реализовать, можно ли IComparable<T> упорядочить или отсортировать экземпляры вашего типа. Если тип реализует IComparable<T>, вы почти всегда также реализуете IEquatable<T>.

Обратите внимание, что в некоторых схемах тип поддерживает отношение порядка, но равенство может отличаться от упорядоченного отношения. Рассмотрим класс, Person в котором сортировка выполняется по алфавиту. Два человека с одинаковыми именами сортируют одинаковые, но не являются одинаковыми людьми.

Методы

Equals(T)

Указывает, равен ли текущий объект другому объекту того же типа.

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

См. также раздел