381 votes

Guid.NewGuid vs nouvelle Guid()

Quelle est la différence entre et ?

Lequel est préférable ?

634voto

Mark Points 7136

``rend un guid « vide » de tout-0 (00000000-0000-0000-0000-000000000000 n’est pas très utile).

``rend un guid réels avec une valeur unique, ce que vous voulez sans doute.

43voto

Jon Hanna Points 40291

Guid.NewGuid() crée un nouvel UUID à l'aide d'un algorithme qui est conçu pour rendre les collisions très, très peu probable.

new Guid() crée un UUID qui est de tous les zéros.

En général, vous préférez l'ancien, parce que c'est le point d'un UUID (sauf si vous êtes recevoir à partir de quelque part d'autre bien sûr).

Il ya des cas où vous souhaitiez un zéro UUID, mais dans ce cas - Guid.Empty ou default(Guid) est plus clair au sujet de vos intentions, et il y a moins de chance de quelqu'un de lire l'attendait une valeur unique a été créé.

En tout, new Guid() n'est pas très utile en raison de ce manque de clarté, mais il n'est pas possible d'avoir une valeur de type qui n'a pas de constructeur sans paramètre qui renvoie un tous les zéros et les valeurs null valeur.

Edit: en Fait, il est possible d'avoir un constructeur sans paramètre sur une valeur de type qui n'a pas tout réglé à zéro et la valeur null, mais vous ne pouvez pas le faire en C#, et les règles sur le moment où il sera appelé et quand il y aura juste un zéro struct créé de la confusion, de sorte qu'il n'est pas une bonne idée de toute façon.

17voto

mishrsud Points 666

[Je comprends que c'est un vieux fil, il suffit d'ajouter un peu plus de détails] Les deux réponses par Marque et Jon Hanna résumer les différences, mais il peut intéresser certains

Guid.NewGuid()

Finalement appels CoCreateGuid (un appel COM à Ole32) (référence ici) et le travail réel est fait par UuidCreate.

Guid.Vide est destinée à être utilisée pour vérifier si un Guid contient tous les zéros. Cela pourrait aussi être fait par comparaison de la valeur de l'Guid en question avec le nouveau Guid()

Donc, si vous avez besoin d'un identifiant unique, la réponse est Guid.NewGuid()

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