maxfie1d のブログ

マイクロソフト系技術ネタを中心に書きます。

C# の珍しいキーワード、checked/unchecked

C# を使っていて、滅多にお目にかからないキーワードが存在します。

その1つである checked/unchecked キーワードのお話です。

checked/unchecked とは

オーバーフローチェックをするかしないかを明示する際に使います。 checkedで囲まれた部分はオーバーフローチェックを行い、 uncheckedで囲まれた部分はオーバーフローチェックされません。

checked/uncheckedキーワードは式と文に対して使用されます。

// checked を式に使う場合
int a = checked(1 + 2);

// checked を文に使う場合
checked
{
    int a = 1 + 2;
}

// checked を式に使う場合
int b = unchecked(1 + 2);

// checked を文に使う場合
unchecked
{
    int b = 1 + 2;
}

デフォルトの場合でオーバーフローチェックはされるか

checkeduncheckedも使わないデフォルトの場合では、 オーバーフローチェックは行われません。ちょっと意外です。 ただし、Visual Studio ではオーバーフローの恐れがある場合に警告が出るのでミスに気づくことができます。