嘿,我正在使用Enumerable.Sum()
LINQ 的扩展方法来计算哈希码,并且OverflowExceptions
在代码变大时遇到了问题。我尝试将呼叫放在一个unchecked
块中,但这似乎没有帮助。
该方法的 MSDN 文档说,如果值变得太大,它会抛出,但我检查了反射器,这就是全部:
public static int Sum(this IEnumerable<int> source) {
if (source == null) {
throw Error.ArgumentNull("source");
}
int num = 0;
foreach (int num2 in source) {
num += num2;
}
return num;
}
基于此反编译,我希望它会溢出或不溢出,具体取决于调用代码的上下文。为什么它会溢出,我怎样才能让它停止?