95 votes

Devrais-je utiliser uint en C # pour les valeurs qui ne peuvent pas être négatives?

J'ai juste essayé de l'implémentation d'une classe où de nombreux longueur/compter les propriétés, etc. sont - uint au lieu de int. Cependant, en faisant de la sorte, j'ai remarqué qu'en fait c'est douloureux de le faire, comme si personne ne veut réellement faire.

Presque tout ce que les mains intégrante de type renvoie un int, donc nécessitant jette dans plusieurs points. Je voulais construire un StringBuffer avec sa longueur de la mémoire tampon par défaut à l'un des champs de la classe. Nécessite un cast aussi.

Donc je me demandais si je devrais revenir à l' int ici. Je ne suis certainement pas en utilisant toute la gamme de toute façon. J'ai juste pensé depuis que je fais face à il n'ya tout simplement ne peut pas être négatif (s'il l'était, ce serait une erreur), ça serait une bonne idée de l'utiliser réellement uint.

P. S.: j'ai vu cette question , et ce, à moins explique pourquoi le framework lui-même utilise toujours int mais, même dans leur propre code, il est en fait lourd pour coller à l' uint ce qui me fait penser apparemment, il n'est pas vraiment voulu.

67voto

Eric Lippert Points 300275

J'ajouterai aux autres réponses également que l'utilisation de uint comme type de champ, propriété, méthode, paramètre, etc., est une violation des règles de spécification de langage commun et doit être évitée lorsque cela est possible.

44voto

ChrisF Points 74295

Bien que vous deviez strictement utiliser uint pour les variables contenant un entier non négatif, vous avez déjà rencontré l’une des raisons pour lesquelles ce n’est pas toujours réalisable.

Dans ce cas, je ne pense pas que la réduction de la lisibilité liée à la distribution soit un avantage.

4voto

Hassan Syed Points 10746

Une valeur négative est souvent utilisée pour signaler une condition d'erreur et la taille d'une opération est souvent renvoyée par un appel de fonction. une valeur négative peut donc signaler une erreur sans recourir à un mécanisme d'exception.

Notez également que .NET s'appuie souvent sur des bibliothèques C droites, il est donc judicieux de poursuivre cette convention. Si vous avez besoin d'un espace d'index plus grand, vous pouvez rompre la convention pour un mécanisme de signalisation d'erreur différent.

4voto

ChrisV Points 2551

Mon sentiment personnel est que vous devriez probablement vous en tenir à int. Il ne vaut pas la peine d'ajouter une distribution à pratiquement chaque accès à une propriété simplement pour récupérer une plage numérique que .NET ne vous laissera probablement pas utiliser de toute façon.

3voto

Ioan Points 1719

L'utilisation d'un int est également utile pour détecter le dépassement d'entier dans les opérations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X