NewGuid vs System.GUID.NewGuid ().ToString ("D");

y a-t-il une différence lorsque vous générez un GUID en utilisant NewGuid(); et System.Guid.NewGuid().ToString("D"); ou ils sont la même chose?

24
demandé sur Davide Piras 2011-09-22 14:34:48

4 réponses

Guid.NewGuid().ToString() est la représentation sous forme de chaîne de GUID, c'est à dire renvoie string objet, alors que l' Guid.NewGuid() retourne Guid type de données.

19
répondu Kirill Polishchuk 2011-09-22 10:36:39

je me rends compte que cette question a déjà une réponse acceptée, mais j'ai pensé qu'il serait utile de partager quelques informations sur le formatage des guids.

ToString() (pas de paramètres) méthode formats un guid à l'aide de ce format:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

méthode ToString(format string) formate un guide de plusieurs façons:

"N" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (32 digits)
"D" - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (32 digits separated by hyphens)
"B" - {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (same as "D" with addition of braces)
"P" - (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) (same as "D" with addition of parentheses)
"X" - {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}

appel Guid.ToString("D") donne le même résultat que l'appel de Guid.ToString().

comme indiqué dans les autres réponses, le guide lui-même n'a pas de format. C'est juste une valeur. Notez que vous pouvez créer des guids en utilisant NewGuid ou en utilisant le constructeur du guid. En utilisant NewGuid, vous n'avez aucun contrôle sur la valeur du guid. En utilisant le constructeur du guid, vous pouvez contrôler la valeur. Utiliser le constructeur est utile si vous avez déjà une représentation de chaîne d'un guid (peut-être que vous l'avez lu à partir d'une base de données) ou si vous voulez faciliter l'interprétation d'un guid pendant le développement. Vous pouvez également utiliser l' Parse,ParseExact, TryParse et TryParseExact méthodes.

Ainsi, vous pouvez créer guid comme ceci:

Guid g1 = Guid.NewGuid(); //Get a Guid without any control over the contents
Guid g2 = new Guid(new string('A',32)); //Get a Guid where all digits == 'A'
Guid g3 = Guid.Parse(g1.ToString());
Guid g4 = Guid.ParseExact(g1.ToString("D"),"D");
Guid g5;
bool b1 = Guid.TryParse(g1.ToString(), out g5);
Guid g6;
bool b2 = Guid.TryParseExact(g1.ToString("D"),"D", out g6);
127
répondu wageoghe 2013-05-01 18:11:47

en utilisant System.Guid.NewGuid() vous obtiendrez un objet de Guid tapez

en utilisant System.Guid.NewGuid().ToString("D"); vous obtiendrez la représentation string de Guid objet

aussi comme je ne connais aucune différence entre .ToString("D") et .ToString()

3
répondu Samich 2011-09-22 10:38:17

L'algorithme de génération doit être le même pour les deux, parce que System.Guid.NewGuid().ToString("D") appelle System.Guid.NewGuid(), et puis en appelant ToString sur le résultat, i.e., les deux exemples appellent la même méthode pour générer le guid. En ce qui concerne la comparaison du "format" - cela n'a pas de sens parce que System.Guid.NewGuid() ne pas avoir un "format" de la même manière que System.Guid.NewGuid().ToString("D") - c'est qu'en appelant le ToString méthode que vous donnez à la représentation interne du guid un format de chaîne externe. Le format de la chaîne dépendra de l'argument que vous passez à la méthode de chaîne.

3
répondu Polyfun 2014-08-29 15:04:08