2018-10-31 19:02:15
Выключение контроля переполнения в C#В предыдущей заметке я рассказывал о ключевом слове checked и возможности устанавливать поведение по умолчанию в случае переполнения в рамках проектов. Нелишним будет упомянуть и о ключевом слове unchecked, которое делает обратное.
В том случае, если в настройках проекта в качестве поведения по умолчанию мы выбираем опцию выбрасывать исключения в случае переполнения, то unchecked может нам помочь избежать этого при необходимости:
int n1 = int.MaxValue; // 2147483647 (0x7FFFFFFF)
int n2 = unchecked(n1 + 1); // Перенос -2147483648
int n3 = n1 + 1; // OverflowException
Как и в случае с checked мы так же может использовать unchecked не только для конкретных операторов, но и целых участков кода:
int n1 = int.MaxValue; // 2147483647
unchecked
{
int n2 = n1 + 1; // Перенос -2147483648
int n4 = n1 * 2; // -2
}
Уверен, вы замечали, что следующий код не будет скомпилирован и отобразится ошибка:
int n1 = int.MaxValue + 1; // Ошибка компиляции: overflow
В этом случае нам также может помочь unchecked:
int n2 = unchecked(int.MaxValue + 1);
Одной из полезных возможностей в Visual Studio для повышения продуктивности для меня являются сниппеты (настоятельно рекомендую ознакомиться всем тем, кто их не использует ). А какой из них вы используете чаще всего?
#data_types
4.5K viewsedited 16:02