3

uint と ulong のデフォルトのコンテキストが、負になることのない値を表すことを意図していることを考慮して、チェックされているのではなく、チェックされていないことを奇妙に感じた人はいますか?

したがって、一部のコードがその制約に違反しようとしている場合、代わりに最大値を返すのではなく、例外をスローすることが自然で好ましい動作のように思えます (これにより、重要なデータが無効な状態になり、元に戻すことができなくなります。 .)。

チェックされたコンテキストで常に算術演算を実行するように、クラス/アセンブリのいずれかに適用できる既存の属性はありますか? 私は(PostSharpを使用する側面として)自分で書くことを考えていましたが、すでにあれば素晴らしいでしょう。

どうもありがとう、

4

1 に答える 1

4

ここで符号なし整数と符号付き整数の違いがわかりません...なぜ 0 からへのアンダーフローが からへuint.MaxValueのアンダーフローよりも優れている可能性がありますか?int.MinValueint.MaxValue

アセンブリ全体をチェック付きでコンパイルする場合は、コマンド ラインまたは Visual Studio で/checked(または/checked+より明示的に) を使用するだけで、プロジェクトのプロパティで [ビルド] タブを見つけ、[詳細...] をクリックして "算術オーバーフロー/アンダーフローをチェックする」ボックス。

特定のクラスだけでこれを行う方法はないと思います。

于 2010-05-05T10:36:18.973 に答える