0

重複の可能性:
負にできない値にはC#でuintを使用する必要がありますか?

(大まかにMaxValue:))2^31と2^32の関係は関係ないとします。一方でuintは、それは自明であるため、使用することは良いように思われます。それは、ある値が決して負になることはないかもしれないことを示します(そして約束しますか?)。ただし、intより一般的であり、キャストはしばしば不便です。intを使用して、常にコードコントラクトで補足することができます(誰もが今では.Net 4.0に移行していますよね?)標準ライブラリはプロパティを使用しintますが、それらが負になることはありません。それで、それはほとんどの場合よりも優れていることはあなたにとって明らかですか、それとももっと複雑ですか?LengthSizeintuint

この質問が明確に述べられていないことがわかった場合は、質問してください。

ありがとう。

編集:うん、だまされたように見える。ただし、非常に小さな質問です。値が負でない場合に、この特定のケースでプロパティ/関数をコードコントラクト/アサートステートメントで補足する方法の良い例を教えてください。

4

2 に答える 2

3

前の答えについては、ここを参照してください。

于 2010-06-03T03:00:08.757 に答える
2

簡単な答えは「いいえ」です。以下のように実装することをお勧めします。

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;
    }
}
于 2010-06-03T06:09:19.037 に答える