Вопрос

Если у класса конкретно не переопределяет поведение, определенное для объекта, ОСОБЕННОСТИ И == Делайте то же самое... Сравните ссылки.

В сопутствующих сортировках я обычно использовал шаблон

private MyType myProperty;

public MyType MyProperty
{
    set
    {
        if (myProperty != value)
        {
            myProperty = value;
            // Do stuff like NotifyPropertyChanged
        }
    }
}

Однако в коде, генерируемом структуре организации, if Заявление заменяется на

    if (!ReferenceEquals(myProperty, value))

Использование опорных данных более четко (как я думаю, не все программисты C # знают, что == делает то же самое, если не переопределить).

Есть ли разница, которое убежит меня между двумя вариантами IF? Могут ли они учеть о возможности, что дизайнеры POCo могут быть переопределены ==?

Короче, если я не переопределил ==, я экономлю использую! = вместо ReferenceEquals()?

Это было полезно?

Решение

Вот разная семантика:

  • ReferenceEquals() Необходимо использовать, если вы имеете в виду, что объекты точно такие же (проверка идентификации).
  • object.Equals() должны использоваться, если вы имеете в виду, что объекты имеют одинаковое значение (проверка равенства)
  • ==() должны использоваться только для неизменных типов. Затем используйте его для проверки на равенство.

Конечно, обратные коллеги подразумеваются соответственно.

Вот резюме

Другие советы

== следует проверять, чтобы увидеть, если опорные точки к тому же местоположению, тогда как опорные тесты, чтобы увидеть, содержат ли они те же данные

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top