我很好奇下一种情况下的编译器效率:
double total = list.Sum(x => x.Value) ?? 0;
问:编译器会生成执行 Sum 函数一次或两次的代码吗?
它可以产生类似的东西:
double total = list.Sum(x => x.Value) == null ? 0 : (double)list.Sum(x => x.Value);
或者
double temp = list.Sum(x => x.Value);
total = temp == null ? 0 : (double)temp;