由于我的理解不好而难以接受生产代码。以下代码提供了错误的结果
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),则下一个语句看起来像是评估的。