在C#中,如果我写下
我希望这与以下内容等效:
因此,在第一个例子中,
int? x = null;
x += x ?? 1
我希望这与以下内容等效:
我期望这个与以下内容等价:
int? x = null;
x = x + x ?? 1
因此,在第一个例子中,
x
应该包含1
,就像第二个例子一样。但它没有,它包含null。当可空类型没有被赋值时,+=运算符似乎不起作用。为什么会这样呢?
编辑:正如指出的那样,这是因为null + 1 = null
和运算符优先级。为了辩护自己,我认为MSDN中的这行文字有歧义!:
预定义的一元和二元运算符以及任何存在于值类型中的用户定义运算符也可以被可空类型使用。如果[任意一个]操作数为null,则这些运算符会产生null值;否则,运算符使用包含的值来计算结果。
??
优先级高于+
吗?(@Servy 的回答) - Austin Salonen