В каких ситуациях я бы указал операцию как непроверенную?

Например:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

Каким образом это будет полезно? можете ли вы придумать что-нибудь?

Ответы

Ответ 1

Используйте unchecked, когда:

  • Вы хотите выразить константу через переполнение (это может быть полезно при указании битовых шаблонов)
  • Вы хотите, чтобы арифметика переполнялась без возникновения ошибки.

Последнее полезно при вычислении хеш-кода - например, в Noda Time проект построен с проверенной арифметикой для виртуального всего, кроме генерации хеш-кода. При вычислении хеш-кода, он полностью нормален для переполнения, и это прекрасно, потому что мы действительно не заботимся о результатах как о числе - мы просто хотим, чтобы он был как шаблон с битами.

Это просто типичный пример, но могут быть другие времена, когда вы действительно счастливы, если MaxValue + 1 будет MinValue.