111,131
社区成员
发帖
与我相关
我的任务
分享
// 以下代码不是工业级的做法,因为“检查空值”,和“进行调用”是两个动作。不是线程安全的。
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("ErrorTimes"));
// ?.操作符号,实现了类似代码(线程安全版本):
var localCopy = PropertyChanged;
if (localCopy != null)
{
localCopy(this, new PropertyChangedEventArgs("ErrorTimes"));
}
很有意思的是在我的VisualStudio2015下,如果你写上述线程安全版本。VisualStudio将建议你换成?.的方式:
(IDE1005 delegate invocation can be simplified)
if(PropertyChanged!=null)
{
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("ErrorTimes"));
}