我尝试使用NULL Coalesce
一起添加几个整数,其中至少有两个整数可能为NULL,在这种情况下,为这样的整数分配0然后添加。
var total = votes[0].Value ?? 0 + votes[1].Value ?? 0 + votes[2].Value ?? 0 + votes[3].Value ?? 0;
total
返回votes[0].Value
的值,而不是添加所有四个变量。
有没有办法可以得到所有整数的总和?
答案 0 :(得分:4)
var total = votes.Sum();
它将空值计为零。
答案 1 :(得分:1)
该代码相当于:
var total = votes[0].Value ?? (0 + votes[1].Value ?? (0 + votes[2].Value ?? (0 + votes[3].Value ?? 0)));
所以它现在应该很明显,为什么它返回votes[0].Value
而不是所有非空值的总和。
答案 2 :(得分:1)
如果投票是一个可以为空的整数数组,你可以写:
var votes = new int?[] {1, 2, 3, 4};
var total = (votes[0] ?? 0) + (votes[1] ?? 0) + (votes[2] ?? 0) + (votes[3] ?? 0);
答案 3 :(得分:0)
这是更干净的,它将跳过空值:
var total = votes.Sum();