以下代码来自Josh Smith的MVVM示例:
/// <summary>
/// Raised when this workspace should be removed from the UI.
/// </summary>
public event EventHandler RequestClose;
void OnRequestClose()
{
//if (RequestClose != null)
// RequestClose(this, EventArgs.Empty);
EventHandler handler = this.RequestClose;
if (handler != null)
handler(this, EventArgs.Empty);
}
带注释的行是我的补充。我的问题是,注释行与未注释行会做相同的事情吧?那么,为什么要创建另一个EventHandler引用呢?还是我在这里想念什么?谢谢
最佳答案
坦莫伊是对的。这样做是为了防止在“if”之后但在“RequestClose()”之前,其他线程中的RequestClose可能被更改(例如,为null)。
关于c# - Josh Smith的MVVM示例应用程序中有关EventHandler的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3757234/