unsigned int/longを確認するC#でチェックされたコンテキストで常に実行する

StackOverflow https://stackoverflow.com/questions/2772379

  •  03-10-2019
  •  | 
  •  

質問

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

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

クラス/アセンブリのいずれかに適用できる既存の属性はあります。私は自分で(ポストシャープを使用した側面として)自分で書くことを考えていましたが、すでにある場合は素晴らしいでしょう。

どうもありがとう、

役に立ちましたか?

解決

署名されたものと比較して、ここでは署名されていない整数の違いがわかりません...なぜ0からunderflowingが uint.MaxValue 障害よりも優れている可能性があります int.MinValueint.MaxValue?

アセンブリ全体をチェックでコンパイルしたい場合は、使用するだけです /checked (また /checked+ より明確にするために)コマンドラインまたはビジュアルスタジオで、プロジェクトプロパティの下にあるビルドタブを見つけます。[Advanced ...]をクリックし、「算術オーバーフロー/アンダーフローのチェック」ボックスをチェックします。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top