4

我有以下代码:

decimal? a = 2m;
decimal? b = 2m;
decimal c = a ?? 1m * b ?? 1m;

由于两者ab都已填写,我希望c给我4的结果。

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

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

4

3 回答 3

5

如果要获取的值,请对值条件进行分组4

decimal c = (a ?? 1m) * (b ?? 1m);

您当前的语法被评估为

decimal c = a ?? (1m * b ?? 1m);

2以及您获得( as fora )价值的原因

于 2012-09-28T02:03:06.823 回答
4

该表达式的作用如下:

decimal c = a ?? (1m * b) ?? 1m;

有一个价值,你就a明白了。

于 2012-09-28T02:03:44.013 回答
3
decimal c = a ?? 1m * b ?? 1m;

等于:

if (a != null)
    c = a
else
    ...

在您的情况下a,它不是 null 并且具有值,2所以这就是结果。

于 2012-09-28T02:03:31.417 回答