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

[?.] = 空值的条件访问操作符

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

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

// 以下代码不是工业级的做法,因为“检查空值”,和“进行调用”是两个动作。不是线程安全的。
    if (PropertyChanged != null)
           PropertyChanged(this, new PropertyChangedEventArgs("ErrorTimes"));

·可简化委托调用(IDE1005 delegate invocation can be simplified) ==>

  PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("ErrorTimes"));

·该[?.]操作符号,实现了类似代码(线程安全版本)。

// ?.操作符号,实现了类似代码(线程安全版本):
   var localCopy = PropertyChanged;
    if (localCopy != null)
    {
     
        localCopy(this, new PropertyChangedEventArgs("ErrorTimes"));
    }

你可能感兴趣的:(C#,?.,空值条件访问操作符)