在实现INotifyPropertyChanged的类我常常看到这样的图案:如果指定相同的值,setter是否应立即返回?
public string FirstName
{
get { return _customer.FirstName; }
set
{
if (value == _customer.FirstName)
return;
_customer.FirstName = value;
base.OnPropertyChanged("FirstName");
}
}
正线
if (value == _customer.FirstName)
return;
都困扰着我。我经常这样做,但我不确定它是否需要也不好。毕竟,如果一个调用者分配了相同的值,我不想重新分配该字段,特别是,通知我的订户该属性已经改变,但在语义上它没有改变。
除了通过释放UI更新屏幕上可能看起来相同的东西来保存一些CPU/RAM/etc/whatever_medium我们获得了什么?
有人可以通过重新分配物业上的相同价值来刷新刷新状态吗?(但不是这种做法是好的做法)?
1.我们应该做还是不应该?
2.为什么?
我想我会不同意你的#2是真的。取决于正在做的事情。比较两个字符串比设置字符串的引用昂贵得多。即使它们不同,你也总是添加处理。 – galford13x 2010-04-12 16:51:31
要添加到我的上一个语句中,根据意图调用OnPropertyChanged可能仍然是需要的。有时候,即使值没有改变,您可能也想要输入OnPropertyChanged事件,只是因为输入了该值。 – galford13x 2010-04-12 16:54:41