可能重复:
Should I use uint in C# for values that can’t be negative?
假设MaxValue
(大致:))2 ^ 31 vs 2 ^ 32并不重要。
一方面,使用uint
似乎很好,因为它是不言自明的,它表明(并承诺?)某些值可能永远不会是负面的。但是,int
更常见,演员经常不方便。一个人可以使用int并始终用代码契约补充它(现在每个人都已转移到.Net 4.0,对吗?)标准库确实使用int
来表示Length
和Size
属性,甚至虽然那些永远不应该是消极的。那么,很明显你int
大多数情况下uint
比{{1}}好,还是更复杂?
如果您发现此问题没有明确说明,请提出问题。
感谢。
编辑:是的,看起来像个傻瓜。但是,还有一个额外的小问题:在这个特殊情况下,当值可能不是负数时,你能给我一个很好的例子来说明如何使用代码契约/断言语句来补充属性/函数吗?
答案 0 :(得分:3)
请参阅此处查看previous answer。
答案 1 :(得分: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;
}
}