0

可能重复:
我应该在 C# 中将 uint 用于不能为负数的值吗?

假设MaxValue(大约:))2^31 与 2^32 无关紧要。一方面, usinguint看起来不错,因为它是不言自明的,它表明(并承诺?)某些值可能永远不会是负数。然而,int更常见的是,演员往往不方便。可以只使用 int 并始终使用代码协定对其进行补充(现在每个人都已迁移到 .Net 4.0,对吗?)标准库确实使用int了 forLengthSizeproperties,即使它们永远不应该是负面的。那么,这对您来说是显而易见的,int还是比uint大多数时候更好,还是更复杂?

如果您发现这个问题没有明确说明,请提出问题。

谢谢。

编辑:是的,看起来像个骗子。但是,还有一个额外的小问题:你能给我一个很好的例子,说明在这种特殊情况下,当值可能不是负数时,如何用代码合同/断言语句补充属性/函数?

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 回答