unchecked (C# リファレンス)

更新 : 2007 年 11 月

unchecked キーワードは、整数型の算術演算および変換に対してオーバーフロー チェックを抑制するのに使用します。

unchecked コンテキストでは、式がチェック先の型の範囲外にある値を生成した場合、結果の値は切り捨てられます。次に例を示します。

unchecked
{
    int val = 2147483647 * 2;
}

上の計算は unchecked ブロックで実行されるため、結果が整数に対して大きすぎることは無視され、val に値 -2 が代入されます。既定では、オーバーフローの検出は有効であり、これは checked を使用する場合と同じ効果があります。

上の例では、unchecked を省略した場合、式で定数が使用され、結果がコンパイル時に既知となってしまうため、コンパイル エラーが発生します。unchecked キーワードは、非定数の式に対するオーバーフロー検出も抑制します。この抑制がないと、実行時に OverflowException が発生します。

unchecked キーワードは、次のように、演算子としても使用できます。

public int UncheckedAdd(int a, int b)
{
    return unchecked(a + b);
}

使用例

この例では、定数式を指定した unchecked ステートメントを使用する方法を示しています。

class TestClass 
{
    const int x = 2147483647;   // Max int 
    const int y = 2;

    static void Main() 
    {
        int z;
        unchecked 
        {
            z = x * y;
        }
        Console.WriteLine("Unchecked output value: {0}", z);
    }
}
// Output: Unchecked output value: -2

C# 言語仕様

詳細については、「C# 言語仕様」の次のセクションを参照してください。

  • 5.3.3.2 ブロック ステートメント、checked ステートメント、および unchecked ステートメント

  • 7.5.12 checked 演算子と unchecked 演算子

  • 8.11 checked ステートメントと unchecked ステートメント

参照

概念

C# プログラミング ガイド

参照

C# のキーワード

チェックありとチェックなし (C# リファレンス)

checked (C# リファレンス)

その他の技術情報

C# リファレンス