Прочитать на английском

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


IEquatable<T> Интерфейс

Определение

Определяет обобщенный метод, реализующий тип значения или класс для создания метода для определения равенства экземпляров.

C#
public interface IEquatable<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)

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

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