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

本文介绍C#-6中新增的空值条件访问操作符[?.],展示其如何简化代码并提高线程安全性。通过具体示例,比较使用前后的代码差异,说明[?.]操作符在委托调用场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  • [?.] 叫做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"));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值