質問

私は、言語仕様 (§7.5.12) に記載されているように、C# がオーバーフロー チェックを実行しないことに慣れています。

チェックまたはチェックされていない演算子やステートメントで囲まれていない非定数式 (実行時に評価される式) の場合、外部要因 (コンパイラ スイッチや実行環境構成など) によってオーバーフロー チェック コンテキストが要求されない限り、デフォルトのオーバーフロー チェック コンテキストはチェックされません。評価を確認しました。

低レベルのコードで配列の境界チェックを行うときにこれを利用しました。

if ((uint)index >= (uint)TotalCount)
    ...

Index が負の場合、TotalCount を超えるほど大きな正の数になることが期待されます。しかし、驚いたことに、負の数を指定すると OverflowException が発生するため、式を unchecked() でラップする必要があります。Visual Studio でプロジェクト オプションを確認しましたが、オーバーフロー チェックを有効または無効にするオプションが見つかりません。では、なぜここにあるのでしょうか?

役に立ちましたか?

解決

プロジェクト内にあるはずです。

  1. 「プロパティ」フォルダをダブルクリックします。
  2. 「ビルド」タブ。
  3. 「詳細...」をクリックします。ボタン。
  4. 「算術オーバーフロー/アンダーフローをチェックする」のチェックを外します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top