空结合运算符

mat*_*att 4 c# null-coalescing-operator

我有以下代码:

decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;
Run Code Online (Sandbox Code Playgroud)

由于双方ab已填写,我希望c给我的结果4.

但是,我得到的结果是2,在这种情况下b取为1而不是2.

有谁知道这种行为背后的原因是什么?

Joh*_*Woo 5

如果要获取值,请将值条件分组 4

decimal c = (a ?? 1m) * (b ?? 1m);
Run Code Online (Sandbox Code Playgroud)

您当前的语法被评估为

decimal c = a ?? (1m * b ?? 1m);
Run Code Online (Sandbox Code Playgroud)

以及你得到的价值2(至于a)