Comment utiliser les Guids en C #?

89

Ce code:

Something = new Guid() 

revient:

00000000-0000-0000-0000-000000000000

tout le temps et je ne peux pas dire pourquoi? Alors pourquoi?

Ante
la source
Double possible de C # comment créer une valeur Guid?
UuDdLrLrSs

Réponses:

148

Tu devrais utiliser Guid.NewGuid()

Will Dean
la source
1
@Ante: Si vous avez la classe Guid, vous avez la méthode NewGuid.
Guffa
61

Juste une explication rapide de la raison pour laquelle vous devez appeler NewGuid plutôt que d'utiliser le constructeur par défaut ... Dans .NET, toutes les structures (types de valeur comme int, decimal, Guid, DateTime, etc.) doivent avoir un constructeur sans paramètre par défaut qui initialise tous les champs à leur valeur par défaut. Dans le cas de Guid, les octets qui composent le Guid sont tous nuls. Plutôt que de créer un cas particulier pour Guid ou d'en faire une classe, ils utilisent la méthode NewGuid pour générer un nouveau Guid "aléatoire".

Josh
la source
12

C'est dedans System.Guid.

Pour créer dynamiquement un GUID dans le code:

Guid messageId = System.Guid.NewGuid();

Pour voir sa valeur:

string x = messageId.ToString();
DOK
la source
Oui, il devrait être là ( msdn.microsoft.com/en-us/library/system.guid_members.aspx ) mais je ne peux pas l'utiliser. Pourquoi?
Ante
"Je ne peux pas l'utiliser" - que se passe-t-il lorsque vous essayez de l'utiliser? Tapez-le manuellement (il y a peut-être un problème avec votre intellisense) et essayez de compiler - obtenez-vous des erreurs de compilation?
Matt Brindley
Que voulez-vous dire quand vous dites que vous ne pouvez pas l'utiliser? Si vous tapez Guid x = System.Guid.NewGuid () et compilez, obtenez-vous une erreur? Ou n'aimez-vous pas la valeur que vous obtenez pour x?
DOK
LOL oui, l'algorithme Guid a parfois besoin d'un nouveau redémarrage. Soupir.
Josh
4

something = new Guid()égale something = Guid.Empty.

Utilisez Guid.NewGuid();plutôt

Will Yu
la source
3
 Guid g1 = Guid.NewGuid();

 string s1;
 s1 = g1.ToString();
 Console.WriteLine("{0}",s1);
 Console.ReadKey();
Leo
la source