当检查null然后加上2数字
时,我遇到了问题代码示例
classA obj = new classA{ a = 2, b = 3}
var x = obj.a??0 + obj.b??0
The result x was 2
预期为5
请告诉我原因?以及如何做这样的操作?
注意:我使用linq来检索obj
答案 0 :(得分:4)
原因是你遗漏了括号:
var x = (obj.a??0) + (obj.b??0);
解析器按如下方式处理非括号表达式:
var x = obj.a ?? (0 + obj.b??0);
仅在obj.b
为obj.a
时评估您添加null
的部分。当obj.a
具有非空值时,将忽略obj.b
。