14

例えば:

int value = Int32.MaxValue;

unchecked
{
    value += 1;
}

これはどのような点で役立ちますか?どれか思いつきますか?

4

1 に答える 1

25

次の場合に使用uncheckedします。

  • オーバーフローを介して定数を表現したい (これは、ビット パターンを指定するときに役立ちます)
  • エラーを発生させずに演算をオーバーフローさせたい

後者は、ハッシュ コードを計算する場合に役立ちます。たとえば、Noda Timeでは、プロジェクトは、ハッシュ コード生成以外のすべての仮想のチェック演算を使用して構築されます。ハッシュ コードを計算するとき、オーバーフローが発生するのはまったく正常なことです。数値としての結果はあまり気にしないため、それは問題ありません。ビット パターンとしての結果が必要なだけです。

これは特に一般的な例にすぎませんが、そうであることが本当に幸せな場合は他にもあるかもしれませMaxValue + 1MinValue

于 2011-09-27T12:27:36.823 に答える