我正在从INotifyPropertyChanged查看NotifyPropertyChanged()并注意到在Microsoft的示例中,例如:
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
首先没有捕获委托引用(正如它在此处所说的那样:Use of null check in event handler)
我查看了自动生成的Reference.cs以获取我的ServiceReferences,并完成了此检查.
所以我的问题是我应该这样做(以任何形式,如扩展方法等)?如果不这样做,是否有任何可能的问题?
解决方法:
你是对的,检查应该完成,他们的例子是错误的.
以下是标准代码.
private void NotifyPropertyChanged(String propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler (this, new PropertyChangedEventArgs(propertyName));
}
}
编辑:进一步解释为什么需要这个(以及它为什么工作)
在MS示例中,他们直接在PropertyChanged上执行空检查,然后调用它.因此,PropertyChanged可能在null检查和调用之间变为null.通过将委托分配给局部变量,我们可以确保保留对委托的引用,并且它不能在空检查和调用之间进行更改.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。