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

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 和以下两种写法的运行效果完全一致:

  1. 结合空合并运算符的写法:
a = a ?? 10;
  1. 常规null判断赋值写法:
if (a == null)
{
    a = 10;
}

这个运算符主要用来简化可空类型的默认值赋值逻辑,减少冗余的null判断代码,提升可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:03