?. 叫做null-conditional operator(空值的条件访问操作符)

版权声明:转载请标注原文地址。【邮箱[email protected]】 https://blog.csdn.net/weixin_42032900/article/details/84101921

?. 叫做null-conditional operator(空值的条件访问操作符),是C#6新增的语言特色。

其实,“空值的条件访问操作符”还是很受欢迎的。它让C#的表达力更强。相同的表达,没有用?.操作符,要多好几条语句。而且,?.操作符是C#语言特色,有VisualStudio2015或以上,就可以编译使用。它跟DotNet运行版本没有关系,DotNet4可以用它,DotNet2等也可以用它。

// 以下代码不是工业级的做法,因为“检查空值”,和“进行调用”是两个动作。不是线程安全的。
    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)

猜你喜欢

转载自blog.csdn.net/weixin_42032900/article/details/84101921