C#では、否定的ではないと思われる値に対してuintまたはintを使用する必要がありますか? [複製

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

質問

可能な複製:
ネガティブにできない値にC#でUINTを使用する必要がありますか?

それを仮定します MaxValue (大まかに))2^31対2^32は問題ではありません。一方で、使用しています uint それは自明であるため、良いように思えます、それは何らかの価値が決して否定的ではない可能性があることを示しています(そして約束しますか?)。でも、 int より一般的であり、キャストはしばしば不便です。 INTを使用するだけで、常にコード契約で補足できます(誰もが.NET 4.0に移動しましたよね?)標準ライブラリは使用します int 為に LengthSize プロパティは、決して否定的であってはなりません。だから、それはあなたにとって明らかです 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;
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top