Почему анонимные типы не перегружают == и! = Операторы (но записи делают)?C#

Место общения программистов C#
Ответить
Anonymous
 Почему анонимные типы не перегружают == и! = Операторы (но записи делают)?

Сообщение Anonymous »

Методы equals и gethashcode на анонимных типах переопределены, чтобы они работали таким образом, что два экземпляра одного и того же анонимного типа считаются равными, только если все их свойства одинаковы - то есть в равенстве стоимости, а не справочника. - Вместо этого они были оставлены для проверки на справочное равенство. Я бы ожидал, что операторы будут перегружены, сродни этому во время процесса понижения: < /p>

Код: Выделить всё

public static bool operator ==(AnonymousType0 x, AnonymousType0 y) => x is not null && x.Equals(y);
public static bool operator !=(AnonymousType0 x, AnonymousType0 y) => !(x == y);
Новые типы записей в C#, с другой стороны, перегружают метод == и! Поэтому мне интересно, какие философские или другие оправдания, которые дизайнеры языка в то время решили не перегружать операторов == и! = на анонимных типах? Равенство.
[*] Иногда он синхронизируется с равными , иногда нет.
Иногда он всегда возвращает одно и то же значение независимо от того, какой тип объект был поднят, иногда нет. Оператор также), действительно кажется, что нет четкой цели для отдельно-внедренного оператора == на языке. Такое ощущение, что это просто служит путанице и приведению к ненужным ошибкам, и было бы лучше, если бы == вообще не может быть перегружена вообще, и вместо этого он всегда проверял операнд на стороне левой стороны и выполнял свой метод равных с помощью правого операнда, который я думаю, что-то, что есть какое-то код, код/код , я предполагаю, что это может быть каким-то кодрой, который можно предположить. Оператор может быть перегружен, чтобы обеспечить пользовательскую проверку равенства на основе идентификации, которая отличается как от равенства значения, так и от справочного равенства-например, на основе гид. Тем не менее, в документации Microsoft, по -видимому, нигде не указывается, что это предполагаемый вариант использования. место; Мой о операторах == и!>

Подробнее здесь: https://stackoverflow.com/questions/796 ... records-do
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»