【发布时间】:2012-09-24 14:02:18
【问题描述】:
在 C# 中,如果我写
int? x = null;
x += x ?? 1
我希望这相当于:
int? x = null;
x = x + x ?? 1
因此在第一个示例中,x 将包含1,如第二个示例中所示。但它没有,它包含空值。 += 运算符在未分配时似乎不适用于可空类型。为什么会这样?
编辑:正如所指出的,这是因为null + 1 = null 和运算符优先级。在我的辩护中,我认为MSDN 中的这一行是模棱两可的!:
预定义的一元和二元运算符以及任何用户定义的 为值类型存在的运算符也可以由 nullable 使用 类型。如果 [either of] 操作数为空;否则,操作员使用包含的值 计算结果。
【问题讨论】: