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

为何加法+在空合并??后求值?解析运算符优先级逻辑及文档

空合并运算符与加法运算符的优先级问题

核心原因

加法运算符+的优先级高于空合并运算符??,所以表达式中会先执行加法运算,再进行空合并判断,这就是代码运行符合预期的逻辑。

代码逻辑拆解

你的代码运行结果完全符合C#运算符优先级规则:

  • 当tNullable = 2时:先计算tNullable + 1得到3(int?类型,非null),再执行3 ?? t,结果取3,匹配第一个断言。
  • 当tNullable = null时:null + 1的结果为null(可空类型运算中,只要操作数为null,结果即为null),再执行null ?? t,结果取t的值7,匹配第二个断言。

规范依据

C#语言规范明确:空合并运算符??的优先级低于算术运算符、关系运算符等。空合并表达式a ?? b的求值逻辑是:先完整求值a,若a不为null则直接返回a的值;仅当a为null时,才会求值b并返回其值。由于+优先级更高,所以a中的加法运算会先完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:02:38