我注意到在我看到的所有 C# 事件示例中,触发事件的写法如下:
PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
那和写有什么区别:
if(PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
最佳答案
在您的第二个示例中,您调用了两次 PropertyChanged
的 getter。在多线程环境中,值可能会在调用之间更改。
在您的第一个示例中,通过首先制作本地副本来防止这种情况。
关于c# - C#中的触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29824896/