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引用. (代表是不可变的)
通过临时处理一个处理程序,您可以防止这种情况,因为您只检查一次该字段. 如果事件永远不会从多线程取消订阅,则不需要临时的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |