[英]Null Coalesce returning value of first non null variable
我正在尝试使用NULL Coalesce
将多个整数加在一起,其中至少2个整数可能为NULL,在这种情况下,将0分配给此类整数,然后相加。
var total = votes[0].Value ?? 0 + votes[1].Value ?? 0 + votes[2].Value ?? 0 + votes[3].Value ?? 0;
total
返回的是votes[0].Value
的值,而不是所有四个变量的和。
有没有办法可以获取所有整数的总和?
var total = votes.Sum();
它将空值计为零。
该代码等效于:
var total = votes[0].Value ?? (0 + votes[1].Value ?? (0 + votes[2].Value ?? (0 + votes[3].Value ?? 0)));
因此,现在应该很明显为什么它返回votes[0].Value
而不是所有非空值的总和。
如果表决是可空整数的数组,则可以编写:
var votes = new int?[] {1, 2, 3, 4};
var total = (votes[0] ?? 0) + (votes[1] ?? 0) + (votes[2] ?? 0) + (votes[3] ?? 0);
这样比较干净,它将跳过空值:
var total = votes.Sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.