我有以下代码:
decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;
由于两者a
和b
都已填写,我希望c
给我4的结果。
但是,我得到的结果是2,在这种情况下b
被视为1而不是2。
有谁知道这种行为背后的原因是什么?
我有以下代码:
decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;
由于两者a
和b
都已填写,我希望c
给我4的结果。
但是,我得到的结果是2,在这种情况下b
被视为1而不是2。
有谁知道这种行为背后的原因是什么?
如果要获取的值,请对值条件进行分组4
decimal c = (a ?? 1m) * (b ?? 1m);
您当前的语法被评估为
decimal c = a ?? (1m * b ?? 1m);
2
以及您获得( as fora
)价值的原因
该表达式的作用如下:
decimal c = a ?? (1m * b) ?? 1m;
有一个价值,你就a
明白了。
decimal c = a ?? 1m * b ?? 1m;
等于:
if (a != null)
c = a
else
...
在您的情况下a
,它不是 null 并且具有值,2
所以这就是结果。