Поделиться через


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)

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

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

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