Можно создать дубликат:
Should I use uint in C# for values that can’t be negative?В C# следует использовать uint или int для значений, которые никогда не должны быть отрицательными?
Предположим, что MaxValue
из (примерно :)) 2^31 против 2^32 не имеет значения. С одной стороны, использование uint
кажется приятным, потому что оно само собой разумеется, оно указывает (и обещает?), Что какое-то значение никогда не может быть отрицательным. Тем не менее, int
чаще встречается, и литье часто неудобно. Можно просто использовать int и всегда дополнять его кодовыми контрактами (все перешли на .Net 4.0 сейчас, правда?) Стандартные библиотеки действительно используют int
для Length
и Size
, хотя они никогда не должны быть отрицательными. Итак, очевидно ли вам, что int
лучше, чем uint
большую часть времени или больше?
Пожалуйста, задавайте вопросы, если вы обнаружите, что этот вопрос четко не указан.
Спасибо.
EDIT: Yup, выглядит как обман. Тем не менее, и лишний вопрос: не могли бы вы дать мне хороший пример того, как дополнить свойства/функции предложениями кодовых контрактов/утверждений в этом конкретном случае, когда значение не может быть отрицательным?