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