C#では、否定的ではないと思われる値に対してuintまたはintを使用する必要がありますか? [複製
-
23-10-2019 - |
質問
それを仮定します MaxValue
(大まかに))2^31対2^32は問題ではありません。一方で、使用しています uint
それは自明であるため、良いように思えます、それは何らかの価値が決して否定的ではない可能性があることを示しています(そして約束しますか?)。でも、 int
より一般的であり、キャストはしばしば不便です。 INTを使用するだけで、常にコード契約で補足できます(誰もが.NET 4.0に移動しましたよね?)標準ライブラリは使用します int
為に Length
と Size
プロパティは、決して否定的であってはなりません。だから、それはあなたにとって明らかです int
よりも良い uint
ほとんどの場合、それとももっと複雑ですか?
この質問が明確に述べられていないことがわかった場合は、質問してください。
ありがとう。
編集: うん、デュペのように見えます。ただし、余分な小さな質問:値が否定的でない場合があるこの特定のケースで、コード契約 /アサートステートメントでプロパティ /関数を補完する方法の良い例を教えてください。
解決
こちらを参照してください 前の答え.
他のヒント
短い答えはNo.以下のように実装することをお勧めします。
private int _length;
public int Length
{
get { return _length; }
set
{
if (value < 0)
{
throw new InvalidOperationException("Length must be always positive. Please make sure the value is positive value.");
}
this._length = value;
}
}
所属していません StackOverflow