unsigned int/longを確認するC#でチェックされたコンテキストで常に実行する
質問
UINTとUlongのデフォルトのコンテキストが、否定的でない値を表すことを意図していることを考慮してチェックされるのではなく、チェックされていないことを奇妙に感じましたか?
したがって、一部のコードがその制約に違反しようとしている場合、代わりに最大値を返すのではなく、自然で好ましい動作は例外をスローすることであるように思われます(重要なデータを無効な状態に簡単に残すことができ、戻ることは不可能です。 。)。
クラス/アセンブリのいずれかに適用できる既存の属性はあります。私は自分で(ポストシャープを使用した側面として)自分で書くことを考えていましたが、すでにある場合は素晴らしいでしょう。
どうもありがとう、
解決
署名されたものと比較して、ここでは署名されていない整数の違いがわかりません...なぜ0からunderflowingが uint.MaxValue
障害よりも優れている可能性があります int.MinValue
に int.MaxValue
?
アセンブリ全体をチェックでコンパイルしたい場合は、使用するだけです /checked
(また /checked+
より明確にするために)コマンドラインまたはビジュアルスタジオで、プロジェクトプロパティの下にあるビルドタブを見つけます。[Advanced ...]をクリックし、「算術オーバーフロー/アンダーフローのチェック」ボックスをチェックします。
特定のクラスのためだけにこれを行う方法はないと思います。
所属していません StackOverflow