Когда мы должны использовать проверенный оператор в C #? - PullRequest
14 голосов
/ 02 марта 2010

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

Ответы [ 4 ]

14 голосов
/ 02 марта 2010

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

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

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

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

 x = unchecked(x + 1);    // ( expression )
 unchecked { x = x + 1;}  // { statement(s) }
6 голосов
/ 02 марта 2010

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

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

int result = unchecked (1000000 * 10000000);  
    // No problems, compiles fine
3 голосов
/ 02 марта 2010

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

3 голосов
/ 02 марта 2010

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

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

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

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

проверено , не проверено

...