Hey, I'm using the Enumerable.Sum()
extension method from LINQ to compute hash codes, and am having a problem with OverflowExceptions
when the code gets big. I tried putting the call in an unchecked
block, but that didn't seem to help.
The MSDN documentation for the method says it will throw if the value gets too big, but I checked in reflector and this is all there is:
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;
}
Based on this decompilation, I would expect it to either overflow or not depending on the context of the calling code. Why is it overflowing, and how can I get it to stop?