例如,我们有一个int数组:
var array = new int[]{ 2147483647, 2147483647, 2147483647, 2147483647};
计算数组条目总和的最简单方法是什么,但就上面提供的示例而言?
array.Sum() 
结果是:
算术运算导致溢出
因为结果不再是int ..
Ste*_*eve 13
因为数组中的值的总和溢出,所以Int32.MaxValue您被迫将元素转换为long
var array = new int[]{ 2147483647, 2147483647, 2147483647, 2147483647};
var total = array.Sum(x => (long)x);
Console.WriteLine(total);
您可以看到total变量的类型为Int64
Console.WriteLine(total.GetType());
史蒂夫的回答非常适合你的问题.但是,如果需要存储长度超过可以使用的典型数据类型的值的总和BigInteger.
var array = new [] { long.MaxValue, long.MaxValue, long.MaxValue, long.MaxValue };
var result = new BigInteger();
result = array.Aggregate(result, (current, i) => current + i);
此解决方案也适用于您提供的阵列.
| 归档时间: | 
 | 
| 查看次数: | 1545 次 | 
| 最近记录: |