空值 ??合并运算符

时间:2015-04-16 05:34:03

标签: c# .net

由于我的理解不好而难以接受生产代码。以下代码提供了错误的结果

        double? value1 = 1;
        double intermediateVariable = 2;
        double? value2 = 0;
        double? value3 = 1;
        double? resultValue1 = value1 ?? 0 + intermediateVariable + value2 ?? 0 + value3 ?? 0;
        double? resultValue1braces = (value1 ?? 0) + intermediateVariable + (value2 ?? 0) + (value3 ?? 0);
        Console.WriteLine(resultValue1);

上述代码的输出为" 1"。
如果我重写上面的附加行,结果是= 4。

         double? resultValue1braces = (value1 ?? 0) + intermediateVariable + (value2 ?? 0) + (value3 ?? 0);
        Console.WriteLine(resultValue1braces);

有人可以帮助理解为什么个人?如果不包括在括号内,则不首先评估运算符语句?
如果我使用value1 ?? 0,下一个语句似乎被忽略,如果我使用(value1 ?? 0),则下一个语句看起来像是评估的。

0 个答案:

没有答案