【发布时间】:2018-10-31 02:42:48
【问题描述】:
我有一个这样的 int 数组
int[] arr = {256741038,623958417,467905213,714532089,938071625};
然后我创建了一个 int64 var
Int64 sum = arr.Sum();
但这导致溢出
运行时异常(第 19 行):算术运算导致 溢出。
如何在不使用循环总结的情况下解决这个问题? (数组类型必须是int)
【问题讨论】:
-
arr.Select(z => (long)z).Sum() -
@vdthe 这里要理解的关键是
Sum不会根据存储Sum所需的内容来选择返回类型(在这种情况下是@987654327 @)。相反,它根据被求和的可枚举的类型来选择它。您正在对int求和,所以,唉,它尝试(未成功)将总和放入int。
标签: c# arrays sum int overflow