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


DA0006. Переопределение Equals() для типов значений

Идентификатор правила

DA0006

Категория

Использование .NET Framework

Методы профилирования

Выборка

Сообщение

Переопределять Equals и оператор равенства в типах значений.

Тип сообщения

Предупреждение

Причина

Вызовы метода Equals или операторов равенства открытого типа значения составляют значительную часть данных профилирования. Рекомендуется внедрить более эффективный метод.

Описание правила

В унаследованной реализации Equals для типов значений используется библиотека System.Reflection и сравнивается содержимое всех полей типа. Отражение является процессом, требующим с точки зрения вычислений больших затрат, и сравнение каждого поля на равенство может быть лишним. Если предполагается, что пользователи будут сравнивать, сортировать экземпляры или использовать их в качестве ключей хэш-таблиц, тип значения должен реализовывать Equals. Если используемый язык программирования поддерживает перегрузку, следует предоставить реализацию операторов равенства и неравенства.

Дополнительные сведения о переопределении Equals и операторов равенства см. в разделе Правила реализации метода Equals и оператора равенства (==).

Анализ предупреждения

Пример реализации Equals и операторов равенства см. в правиле анализа кода CA1815: следует переопределять равенства и равенства операторов в типах значений.