! (Опорные опорные ()) против! = В рамках сущности 4
-
27-09-2019 - |
Вопрос
Если у класса конкретно не переопределяет поведение, определенное для объекта, ОСОБЕННОСТИ И == Делайте то же самое... Сравните ссылки.
В сопутствующих сортировках я обычно использовал шаблон
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()
должны использоваться, если вы имеете в виду, что объекты имеют одинаковое значение (проверка равенства)==()
должны использоваться только для неизменных типов. Затем используйте его для проверки на равенство.
Конечно, обратные коллеги подразумеваются соответственно.
Другие советы
== следует проверять, чтобы увидеть, если опорные точки к тому же местоположению, тогда как опорные тесты, чтобы увидеть, содержат ли они те же данные