当财产的实际价值没有变化时触发"财产已更改"事件是否合适?
public int SomeProperty
{
get { return this.mSomeProperty; }
set
{
this.mSomeProperty = value;
OnPropertyChanged(new PropertyChangedEventArgs("SomeProperty"));
}
}
Run Code Online (Sandbox Code Playgroud)
即使新值与旧值相同,这也会触发事件.这是不好的做法吗?
除非值发生变化,否则最佳做法不是抛出事件.
在你的情况下,属性只是一个'int',所以它只是一个简单的相等检查.如果您的财产本身就是一个对象,则需要考虑更多案例
您再次设置相同的实例 - 没有属性更改
您使用不同的值设置不同的实例 - 抛出属性更改
您设置了一个不同的但是"相等"的实例(即,两个不同的对象具有相同的值集,并且从您的应用程序的角度来看可以被认为是等效的) - 抛出属性更改.
最后一个会受到一些争论......当所有属性都相同时,属性是否真的发生了变化?如果有人使用该属性更改来订阅子类中的更改,则需要它知道取消订阅旧类并订阅新类.因此,我在宣布改变方面犯了错误.
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |