C#中的双问号等号运算符(??=)是什么含义?
C# 中
??= 运算符的含义 ??= 是C# 8.0版本新增的空合并赋值运算符,是原有空合并运算符 ?? 的语法糖扩展。
核心逻辑
仅当运算符左侧的可空类型变量/属性的值为 null 时,才会将右侧的值赋值给左侧的对象;如果左侧值不为 null,则不执行赋值操作,直接保留左侧的原有值。
结合你给出的代码示例说明
int? a = 5; //...其他代码 a ??= 10;
- 如果中间其他代码没有修改
a的值,a始终为非null的5,运行a ??= 10后a的值还是5 - 如果中间其他代码把
a赋值为null,运行a ??= 10后a的值会被设置为10
等价传统写法
a ??= 10 和以下两种写法的运行效果完全一致:
- 结合空合并运算符的写法:
a = a ?? 10;
- 常规null判断赋值写法:
if (a == null) { a = 10; }
这个运算符主要用来简化可空类型的默认值赋值逻辑,减少冗余的null判断代码,提升可读性。
内容的提问来源于stack exchange,提问作者LCIII
相关产品推荐
相关产品推荐

