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> типа интерфейса типом, реализующим этот интерфейс.

При реализации 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)

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

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

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