チェックありとチェックなし

# チェック済みと未チェック

C# ステートメントは、checked または unchecked コンテキストで実行されます。チェックされたコンテキストでは、算術オーバーフローによって例外が発生します。チェックされていないコンテキストでは、算術オーバーフローは無視され、結果は切り捨てられます。

short m = 32767;   
short n = 32767;
int result1 =  checked((short)(m + n));   //will throw an OverflowException
int result2 =  unchecked((short)(m + n)); // will return -2

これらのどちらも指定されていない場合、既定のコンテキストは、コンパイラ オプションなどの他の要因に依存します。

# スコープとしてのチェック済みおよび未チェック

キーワードは、複数の操作をチェック (解除) するためにスコープを作成することもできます。

short m = 32767;
short n = 32767;
checked
{
    int result1 = (short)(m + n); //will throw an OverflowException
}
unchecked
{
    int result2 = (short)(m + n); // will return -2
}

# 構文

  • checked(a + b) // チェックされた式
  • unchecked(a + b) // チェックされていない式
  • チェック済み { c =a + b; c +=5; } // チェックされたブロック
  • 未チェック { c =a + b; c +=5; } // チェックされていないブロック