В C# я должен использовать Uint или Int для значений, которые никогда не должны быть отрицательными? [дублировать
-
23-10-2019 - |
Вопрос
Возможный дубликат:
Должен ли я использовать Uint в C# для значений, которые не могут быть отрицательными?
Предположим, что MaxValue
(примерно :)) 2^31 против 2^32 не имеет значения. С одной стороны, используя uint
Кажется хорошим, потому что это самоочевидное, это указывает (и обещает?), что какое-то значение никогда не может быть отрицательным. Однако, int
чаще, а актерский состав часто неудобен. Можно просто использовать int и всегда дополнять его с помощью контрактов с кодом (каждый перешел на .net 4.0. int
за Length
а также Size
Свойства, хотя они никогда не должны быть негативными. Итак, очевидно для вас, что int
лучше, чем uint
Большую часть времени, или это сложнее?
Пожалуйста, задавайте вопросы, если вы обнаружите, что этот вопрос не четко указан.
Спасибо.
РЕДАКТИРОВАТЬ: Ага, выглядит как обманывать. Однако, и дополнительный небольшой вопрос: не могли бы вы привести мне хороший пример того, как дополнить свойства / функции с помощью контрактов с кодом / утверждений утверждения в данном конкретном случае, когда значение не может быть отрицательным?
Решение
Смотрите здесь для Предыдущий ответ.
Другие советы
Короткий ответ - нет, вы можете реализовать, как показано ниже.
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;
}
}