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?
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.
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);
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()
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.