В C# я должен использовать Uint или Int для значений, которые никогда не должны быть отрицательными? [дублировать

StackOverflow https://stackoverflow.com/questions/2963057

Вопрос

Возможный дубликат:
Должен ли я использовать 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;
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top