Null Coalesce返回第一个非null变量的值

时间:2016-12-30 22:06:58

标签: c# null-coalescing-operator

我尝试使用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的值,而不是添加所有四个变量。

有没有办法可以得到所有整数的总和?

4 个答案:

答案 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();