В каких ситуациях я бы указывал операцию как непроверенную? - PullRequest
14 голосов
/ 27 сентября 2011

Например:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

Чем это может быть полезно? Вы можете думать о любом?

1 Ответ

25 голосов
/ 27 сентября 2011

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

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

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

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

...