Исключения переполнения для целых (и других целочисленных типов) выполняются только в контекстах checked
.
Таким образом, это приведет к исключению:
checked
{
int i = int.MaxValue;
Console.WriteLine(i + 1);
}
Они не настроены на это по умолчанию, поскольку они стоят дороже, чем просто переполнение.
Из MSDN:
Ключевое слово selected используется для явного включения проверки переполнения для целочисленных значений.введите арифметические операции и преобразования.
И:
Проверка переполнения может быть включена с помощью параметров компилятора, конфигурации среды или использования ключевого слова checked.
Это не недавнее изменение - C # был таким с первого дня.В этом вопросе вы видите код VB.NET, который по умолчанию находится в проверенном контексте.
Таким образом, при сохранении значений по умолчанию переполнение кода в VB.NET вызовет исключение, но идентичный код в C # будетнет.