Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
36 of 1492 menu
◀ ▶

Оператор checked

Контекст checked можно задать блоком или обернуть одно выражение в checked(…). При переполнении для целых типов выбрасывается OverflowException. Константные выражения проверяются на этапе компиляции, поэтому, например, int.MaxValue + 1 в константе не скомпилируется. Неконстантная арифметика по умолчанию выполняется в режиме unchecked.

Синтаксис

checked { выражения } checked(выражение)

Пример

Давайте безопасно сложим два небольших числа:

using System; class Program { static void Main() { int a = 100; int b = 23; int res = checked(a + b); Console.WriteLine(res); } }

Результат выполнения кода:

123

Пример

Давайте поймаем переполнение при прибавлении единицы:

using System; class Program { static void Main() { int num = int.MaxValue; try { int res = checked(num + 1); Console.WriteLine(res); } catch (OverflowException) { Console.WriteLine("overflow"); } } }

Результат выполнения кода:

"overflow"

Пример

Давайте используем блок checked для нескольких операций:

using System; class Program { static void Main() { int num = 5; checked { num = num * 2; } Console.WriteLine(num); } }

Результат выполнения кода:

10

Пример

Давайте сравним поведение без переполнения в checked:

using System; class Program { static void Main() { int num = 10; int res = checked(num + 2); Console.WriteLine(res); } }

Результат выполнения кода:

12

Смотрите также

  • оператор unchecked,
    который отключает проверку переполнения
  • выражение throw,
    которое сообщает об ошибке в выражении
  • ключевое слово const,
    где переполнение ловят при компиляции
  • оператор sizeof,
    который показывает размер целых типов
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить