You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NotifyPropertyChanged代码中PropertyChanged?的?运算符含义是什么

C# 中PropertyChanged?里?运算符的含义

这个?是C# 6.0版本引入的Null 条件运算符(也叫空值传播运算符),作用是在调用对象成员前自动做非空校验,具体逻辑如下:

  • 当PropertyChanged为null时,运算符会直接中断后续的Invoke调用,整个表达式返回null,不会抛出空引用异常
  • 当PropertyChanged不为null时,才会正常执行后续的Invoke方法调用

这个写法等价于传统的手动空判断逻辑:

if (PropertyChanged != null)
{
    PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propName));
}

补充说明:PropertyChanged是INotifyPropertyChanged接口定义的事件委托,当没有任何对象订阅该事件时,它的默认值就是null。如果直接调用Invoke会直接触发空引用异常,用Null条件运算符可以简化空判断代码,同时该运算符的空校验是原子操作,多线程场景下也不会出现校验后值被其他线程修改为null的问题,比手动写if判断安全性更高。

内容的提问来源于stack exchange,提问作者Athena_92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:24:03