加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:07:44 所属栏目:百科 来源:网络整理
导读:样品代码: public event PropertyChangedEventHandler PropertyChanged;private void OnPropertyChanged(String propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this,new PropertyChangedEventAr
样品代码:
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引用. (代表是不可变的)

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读