2011-02-02 3 views
15

私はC#で作業していましたが、非常に大きな整数があり、それを大きくしようとしたときに気づいていました。むしろ、何らかのタイプのオーバーフローエラーを投げているだけで、私は信じている最も低い値(-2,147,483,648)に数字を設定するだけです。C#オーバーフローが機能していませんか?オーバーフローチェックを有効にする方法

Visual Studioでオーバーフローチェックを有効にする方法があるのか​​しら?

答えて

30

あなたは、Visual Studioでチェック算術オーバーフロー/アンダーフローを有効にするには、次の手順を使用することができます。

  1. 右ソリューションエクスプローラでプロジェクトを右クリックし、[プロパティ]を選択します。
  2. [ビルド]タブで、[詳細設定]ボタンをクリックします。
  3. 「算術オーバーフロー/アンダーフローをチェックする」チェックボックスをオンにします。

オーバーフローが、それは最小値に値を変更する通常の操作だのではなく、発生したとき、これはSystem.OverflowExceptionをスローします。算術オーバーフロー/アンダーフローがなければ

有効:算術オーバーフロー/アンダーフローで

int test = int.MaxValue; 
test++; 
//Test should now be equal to -2,147,483,648 (int.MinValue) 

有効:

checked 
{ 
    int test = int.MaxValue; 
    test++; 
    //System.OverflowException thrown 
} 
0:

int test = int.MaxValue; 
test++; 
//System.OverflowException thrown 

確認ブロックを使用して

確認済みのドキュメントはhere.です。ありがとうございます。

+12

また、 'checked'キーワードを使用して、文または一連の文をラップして、算術オーバーフローを明示的にチェックすることもできます。しばしばオーバーフローがかなり合理的な期待であるため、プロジェクト全体のプロパティを設定することは少し危険です。 –

+2

このコンパイラオプションは、コードに明示的に 'checked'または' unchecked'コンテキストがない場合にのみ適用されることに注意してください。また、Visual Studioでのデバッグだけでなく、結果として生じる実行可能ファイルにも影響します。 http://msdn.microsoft.com/en-us/library/h25wtyxf%28v=VS.100%29.aspx – Justin

+0

@Rionmonsterと@Sasha - これらの2つの機能についてはわかりませんでした。 。両方に感謝します。 –

関連する問題