En C # dois-je utiliser uint ou int pour des valeurs qui ne sont jamais censés être négatif? [dupliquer]

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

Question

Possible en double: dois-je utiliser uint en C # pour les valeurs qui ne peut pas être négatif?

Supposons que le MaxValue de (à peu près :)) 2 ^ 2 ^ 31 vs 32 n'a pas d'importance. D'une part, en utilisant uint semble agréable car il est explicite, il indique (et promesses?) Que certaine valeur ne peut jamais être négatif. Cependant, int est plus fréquente, et un plâtre est souvent peu pratique. On peut simplement utiliser int et toujours compléter avec des contrats de code (tout le monde est passé à .Net 4.0 maintenant, non?) Les bibliothèques standard font usage int pour les propriétés de Length et Size, même si ceux-ci devraient jamais être négatif. Alors, est-il évident pour vous que int est mieux que uint la plupart du temps, ou est-il plus compliqué?

S'il vous plaît poser des questions si vous trouvez que cette question ne soit pas clairement indiqué.

Merci.

EDIT: Yup, ressemble à une dupe. Cependant, et une petite question supplémentaire: pourriez-vous me donner un bon exemple de la façon de compléter les propriétés / fonctions des contrats de code / assert déclarations dans ce cas particulier lorsque la valeur ne peut pas être négatif

?
Était-ce utile?

La solution

Voir ici pour la précédente répondre .

Autres conseils

Réponse courte est Non. Vous pouvez mettre en œuvre comme ci-dessous.

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;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top