Возможный дубликат:
Следует ли использовать uint в C # для значений, которые не могут быть отрицательными?
Предположим, что MaxValue
(примерно :)) 2 ^ 31 против 2 ^ 32 не имеет значения. С одной стороны, использование uint
кажется приятным, потому что оно не требует пояснений, оно указывает (и обещает?), Что какое-то значение никогда не может быть отрицательным. Однако чаще встречается int
, и гипсовая повязка часто бывает неудобной. Можно просто использовать int и всегда дополнять его контрактами кода (все уже перешли на .Net 4.0, верно?) Стандартные библиотеки действительно используют int
для свойств Length
и Size
, хотя они никогда не должны быть отрицательными. Итак, для вас очевидно, что в большинстве случаев int
лучше, чем uint
, или это сложнее?
Пожалуйста, задавайте вопросы, если вы обнаружите, что этот вопрос сформулирован нечетко.
Спасибо.
РЕДАКТИРОВАТЬ: Ага, похоже, обман. Однако и дополнительный небольшой вопрос: не могли бы вы дать мне хороший пример того, как дополнить свойства / функции контрактами кода / утверждениями в этом конкретном случае, когда значение не может быть отрицательным?