На это может влиять тип недвижимости. Некоторые классы имеют интеллектуальные методы Equals, а некоторые нет. Если вы доверяете своему, это не должно иметь значения, но если класс не переопределяет Equals или не делает это хорошо, то это что-то меняет. В целом, я бы сказал, что базовое значение не должно меняться без отправки уведомления, поэтому я бы пошел с # 2.
Для примера, может быть, есть простой держатель данных, который выглядит примерно так:
class Data
{
public int ID { get; set; }
public string SomeData { get; set; }
public string SomeOtherData { get; set; }
//Assume there are lots of other fields here
public override bool Equals(object obj)
{
Data other = obj as Data;
if (other != null)
{
return ID == other.ID;
}
return false;
}
}
Теперь, если идентификатор равен , предполагается, что уникален (возможно, потому, что он сопоставляется со значением идентификатора БД), тогда это неплохая идея, но это не мешает людям создавать объекты с одинаковым идентификатором и разными значениями данных. Если бы какой-то подлый человек сделал это, вы могли бы в конечном итоге установить значение для свойства, такого как ваше, в котором новое значение действительно существенно отличается, но .Equals скажет, что они одинаковы. Теперь, независимо от того, что здесь происходит, вы несколько облажались, но что еще хуже, не устанавливая значение, которое не должно отличаться, но является (потому что набор находится внутри if), или изменяя значение и не уведомляя подписчиков события о том, что событие изменилось? (У вас также есть третий вариант установки события и уведомления людей, даже если оно изменилось, возможно, указано, что это происходит с помощью аргументов события.) Если подписчик события представляет собой код, который сохраняет изменение в базе данных (которая часто является случай с этим типом структуры), то вы меняете значение в памяти, думая, что оно действительно изменилось (возвращение его является точным эталонным соответствием), но значение по-прежнему не будет сохраняться, потому что событие не было запущено .
Извините за стену текста.
tl; dr версия, пользователи этого кода могут найти способ прокрутить вас независимо от того, что вы делаете; в конечном итоге вам нужно минимальное доверие к ним, чтобы ваш код был эффективным.