Эй, я использую метод расширения 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;
}
Основываясь на этой декомпиляции, я ожидаю, что она будет либо переполняться, либо не зависящей от контекста вызывающего кода. Почему это переполняется, и как я могу заставить его остановиться?