Когда мы должны использовать проверочный оператор в С#?

Когда мы должны использовать оператор checked в С#?
Он подходит только для обработки исключений?

Ответы

Ответ 1

Вы использовали бы checked для защиты от (беззвучного) переполнения в выражении.
И используйте unchecked, когда вы знаете, что может произойти безобидное переполнение.

Вы используете оба в местах, где вы не хотите полагаться на настройку компилятора по умолчанию (по всему проекту).

Обе формы довольно редки, но при выполнении критической целочисленной арифметики стоит подумать о возможном переполнении.

Также обратите внимание, что они бывают двух форм:

 x = unchecked(x + 1);    // ( expression )
 unchecked { x = x + 1;}  // { statement(s) }

Ответ 2

checked поможет вам подобрать System.OverFlowException, который останется незамеченным иначе

int result = checked (1000000 * 10000000);   
    // Error: operation > overflows at compile time

int result = unchecked (1000000 * 10000000);  
    // No problems, compiles fine

Ответ 3

От Проверенные и непроверенные операторы

Проверенные и непроверенные операторы используются для управления переполнением проверка контекста для интегрального типа арифметические операции и преобразования.

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

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

отмечен, не отмечен

Ответ 4

checked vs. unchecked также полезен в те моменты, когда вы выполняете математику целых чисел. особенно увеличивая операции, и вы знаете, что будете увеличивать прошлое UInt32.MaxValue, и хотите, чтобы он безвредно переполнился до 0.