En C # dois-je utiliser uint ou int pour des valeurs qui ne sont jamais censés être négatif? [dupliquer]
-
23-10-2019 - |
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
?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;
}
}