什么时候应该解雇"财产变更"事件?

M. *_*ley 2 c# events

当财产的实际价值没有变化时触发"财产已更改"事件是否合适?

public int SomeProperty
{
    get { return this.mSomeProperty; }
    set
    {
        this.mSomeProperty = value;
        OnPropertyChanged(new PropertyChangedEventArgs("SomeProperty"));
    }
}
Run Code Online (Sandbox Code Playgroud)

即使新值与旧值相同,这也会触发事件.这是不好的做法吗?

Chr*_*uin 5

除非值发生变化,否则最佳做法不是抛出事件.

在你的情况下,属性只是一个'int',所以它只是一个简单的相等检查.如果您的财产本身就是一个对象,则需要考虑更多案例

  1. 您再次设置相同的实例 - 没有属性更改

  2. 您使用不同的值设置不同的实例 - 抛出属性更改

  3. 您设置了一个不同的但是"相等"的实例(即,两个不同的对象具有相同的值集,并且从您的应用程序的角度来看可以被认为是等效的) - 抛出属性更改.

最后一个会受到一些争论......当所有属性都相同时,属性是否真的发生了变化?如果有人使用该属性更改来订阅子类中的更改,则需要它知道取消订阅旧类并订阅新类.因此,我在宣布改变方面犯了错误.