c# – 事件 – 处理程序与直接访问?为什么?

前端之家收集整理的这篇文章主要介绍了c# – 事件 – 处理程序与直接访问?为什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
样品代码
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(String propertyName) 
{ 
    PropertyChangedEventHandler handler = PropertyChanged; 
    if (handler != null) 
    {
        handler(this,new PropertyChangedEventArgs(propertyName));
    }
}

VS:

public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(String propertyName) 
{ 
    if (PropertyChanged!= null) 
    {
        PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
    }
}

为什么我总是看到人们创建将PropertyChanged分配给“处理程序”而不是仅仅使用它?

解决方法

如果你做的更简单一些,并且不同的线程从你的if中的事件中删除最后一个处理程序,你将得到一个null引用. (代表是不可变的)

通过临时处理一个处理程序,您可以防止这种情况,因为您只检查一次该字段.

如果事件永远不会从多线程取消订阅,则不需要临时的.

原文链接:/csharp/92626.html

猜你在找的C#相关文章