在C#中发射事件

Dir*_*dly 2 c# events

我已经注意到在C#中看到的事件的所有示例中,触发事件的内容如下:

PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
    handler(this, new PropertyChangedEventArgs(propertyName));
Run Code Online (Sandbox Code Playgroud)

这和刚写的有什么不同:

if(PropertyChanged != null)
    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
Run Code Online (Sandbox Code Playgroud)

GvS*_*GvS 8

在第二个示例中,您将PropertyChanged两次调用getter .在多线程环境中,可以在调用之间更改值.

通过首先制作本地副本,可以在第一个示例中防止这种情况.