我正在看NotifyPropertyChanged()
from INotifyPropertyChanged
并注意到在 Microsoft 的示例中,如下所示:
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
首先没有捕获委托引用(正如它所说的,例如:在事件处理程序中使用 null 检查 https://stackoverflow.com/questions/672638/use-of-null-check-in-event-handler)
我查看了自动生成的 ServiceReferences Reference.cs,并完成了此检查。
所以我的问题是我应该这样做(以任何形式,例如扩展方法等)?如果我不这样做,会有什么问题吗?
你是对的,应该进行检查,他们的例子是错误的。
以下是标准代码。
private void NotifyPropertyChanged(String propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler (this, new PropertyChangedEventArgs(propertyName));
}
}
Edit:关于为什么需要这样做(以及为什么它有效)的进一步解释
在 MS 示例中,他们直接对 PropertyChanged 进行空检查,然后调用它。因此,PropertyChanged 在空检查和调用之间有可能变为空。通过将委托分配给局部变量,我们可以确保保留对委托的引用,并且它在空检查和调用之间不会更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)