DA0006. Переопределение Equals() для типов значений
Идентификатор правила |
DA0006 |
Категория |
Использование .NET Framework |
Методы профилирования |
Выборка |
Сообщение |
Переопределять Equals и оператор равенства в типах значений. |
Тип сообщения |
Предупреждение |
Причина
Вызовы метода Equals или операторов равенства открытого типа значения составляют значительную часть данных профилирования. Рекомендуется внедрить более эффективный метод.
Описание правила
В унаследованной реализации Equals для типов значений используется библиотека System.Reflection и сравнивается содержимое всех полей типа. Отражение является процессом, требующим с точки зрения вычислений больших затрат, и сравнение каждого поля на равенство может быть лишним. Если предполагается, что пользователи будут сравнивать, сортировать экземпляры или использовать их в качестве ключей хэш-таблиц, тип значения должен реализовывать Equals. Если используемый язык программирования поддерживает перегрузку, следует предоставить реализацию операторов равенства и неравенства.
Дополнительные сведения о переопределении Equals и операторов равенства см. в разделе Правила реализации метода Equals и оператора равенства (==).
Анализ предупреждения
Пример реализации Equals и операторов равенства см. в правиле анализа кода CA1815: следует переопределять равенства и равенства операторов в типах значений.