gpt4 book ai didi

c# - LINQ-Sum 的不同行为和手动添加整数值

转载 作者:太空狗 更新时间:2023-10-30 00:52:10 25 4
gpt4 key购买 nike

造成这种不同行为的原因可能是什么:

int temp = 2147483647;
Console.WriteLine(temp + 1); //returns -2147483648

List<int> ltemp = new List<int>() { 2147483647, 1 };
Console.WriteLine(ltemp.Sum()); //returns OverFlowException

最佳答案

Enumerable.Sum 是通过使用 checked 关键字计算总和来实现的。

checked (C# Reference)

The checked keyword is used to explicitly enable overflow checking for integral-type arithmetic operations and conversions.

它使用以下代码- Source Reference - Microsoft :

public static int Sum(this IEnumerable<int> source) {
if (source == null) throw Error.ArgumentNull("source");
int sum = 0;
checked {
foreach (int v in source) sum += v;
}
return sum;
}

如果你做同样的事情:

checked
{
int temp = 2147483647;
Console.WriteLine(temp + 1); //returns -2147483648
}

你会得到同样的异常

关于c# - LINQ-Sum 的不同行为和手动添加整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com