Вы бы использовали checked
для защиты от (тихого) переполнения в выражении.
И используйте unchecked
, когда вы знаете, что может произойти безопасное переполнение.
Вы используете оба в тех местах, где вы не хотите полагаться на настройку компилятора по умолчанию (для всего проекта).
Обе формы довольно редки, но при выполнении критической целочисленной арифметики стоит подумать о возможном переполнении.
Также обратите внимание, что они бывают двух видов:
x = unchecked(x + 1); // ( expression )
unchecked { x = x + 1;} // { statement(s) }