Ключевые слова checked и unchecked Имеется средство, связанно | C#Hive: Projects & Progress | Программирование

Ключевые слова checked и unchecked

Имеется средство, связанное с генерированием исключений, возникающих при переполнении в арифметических вычислениях. Как известно, результаты некоторых видов арифметических вычислений могут превышать диапазон представления чисел для типа данных, используемого в вычислении. В этом случае происходит так называемое переполнение.

Допускается указывать, будет ли в коде генерироваться исключение при переполнении, с помощью ключевых слов checked и unchecked. Так, если требуется указать, что выражение будет проверяться на переполнение, следует использовать ключевое слово checked, а если требуется проигнорировать переполнение — ключевое слово unchecked. В последнем случае результат усекается, чтобы не выйти за пределы диапазона представления чисел для целевого типа выражения.

У ключевого слова checked имеются две общие формы. В одной форме проверяется конкретное выражение, поэтому она называется операторной. В другой форме проверяется блок операторов, поэтому она называется блочной. Ниже приведены обе формы:
checked(выражение)

checked
{
// Проверяемые операторы
// ...
}

Если вычисление проверяемого выражения или блока приводит к переполнению, то генерируется исключение OverflowException.

У ключевого слова unchecked также имеются две общие формы. Их синтаксис имеет ту же основу:
unchecked(выражение)

unchecked
{
// Операторы, для которых переполнение игнорируется
// ...
}

Если же в непроверяемом выражении или блоке происходит переполнение, то результат его вычисления усекается.

Используем unchecked в одном выражении:
int maxInt = int.MaxValue;
int uncheckedResult = unchecked(maxInt + 1);
Console.WriteLine(uncheckedResult);

Вывод с урезанным результатом:
-2147483648

Используем checked для всего блока операторов:
checked
{
try
{
int maxInt = int.MaxValue;
int checkedResult = maxInt + 1;
Console.WriteLine(checkedResult);
}
catch (OverflowException e)
{
Console.WriteLine($"Переполнение: {e.Message}");
}
}

Вывод:
Переполнение: Arithmetic operation resulted in an overflow.

Использовать checked уместно там, где переполнение может привести к критическим ошибкам в логике нашего приложения.

#Полезно #Exception #TryCatch
C#Hive: Projects & Progress | Программирование

C#Hive: Projects & Progress | Программирование

@csharphive
1.80K Подписчиков
Технологии Категория
Сообщество единомышленников C#: решаем задачи, учимся, развиваемся и общаемся вместе. Советы по работе на фрил...