我有以下代码:
decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;
由于a
和b
都已填写,我希望c
能够提供 4 的结果。
但是,我得到的结果是 2 ,在这种情况下,b
被视为 1 而不是 2 。< / p>
有谁知道这种行为背后的原因是什么?
答案 0 :(得分:5)
4
的值,请对值条件进行分组
decimal c = (a ?? 1m) * (b ?? 1m);
您当前的语法评估为
decimal c = a ?? (1m * b ?? 1m);
以及您获得2
(和a
)值的原因
答案 1 :(得分:4)
表达式的作用如下:
decimal c = a ?? (1m * b) ?? 1m;
由于a
有一个值,你可以得到它。
答案 2 :(得分:3)
decimal c = a ?? 1m * b ?? 1m;
等于:
if (a != null)
c = a
else
...
在您的情况下,a
不为空且值为2
,因此这就是结果。