C # comment créer une valeur Guid?

Réponses:

897
Guid id = Guid.NewGuid();
David
la source
252
Si vous faites comme moi l'erreur de faire (new Guid (). ToString ()) vous obtiendrez 0000-00000-00000-00000. Vous devez faire Guid.NewGuid (). ToString ()
Joao Carlos
12
Vous pourriez aussi être intéressé par le formatage de Guid msdn.microsoft.com/en-us/library/97af8hh4(v=vs.110).aspx
Anil Vangari
9
Petite correction, il n'y a pas de fonction 'toString ()' sur l'objet Guid, c'est 'ToString ()'
AB
95

Guid.NewGuid() crée un nouveau guid aléatoire.

Adam Driscoll
la source
83

Il y a deux façons

var guid = Guid.NewGuid();

ou

var guid = Guid.NewGuid().ToString();

les deux utilisent la classe Guid, le premier crée un objet Guid, le second une chaîne Guid.

Justin
la source
47
@Justin, C'est une façon de procéder. var guid = Guid.NewGuid().ToString()le transforme simplement en chaîne.
Michael Meadows
@MichaelMeadows Oui c'est correct, le premier crée un nouvel objet Guid, le second crée une chaîne.
Justin
34
var guid = new Guid();

Hé, c'est un "valide", bien que pas très utile, Guid.

(le guid est entièrement composé de zéros, si vous ne le savez pas. Parfois, cela est nécessaire pour indiquer l'absence de guid, dans les cas où vous ne souhaitez pas utiliser un guid annulable)


la source
Cela ne crée pas tous les zéros. Il crée un Guid valide. Guid.Empty renvoie tous les zéros.
FlavorScape
8
@FlavorScape avant d'essayer, je parie que vous 50 rep (via bounty) vous vous trompez. Traiter?
meh, je pensais à Guid.NewGuid (). Je tiens vraiment à vérifier le nouveau Guid ()
FlavorScape
11
Je vous ai battu par un avec cette solution:var guid = new Guid(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, });
Jeppe Stig Nielsen
2
Lorsque vous devez passer un guid à du code que vous ne possédez pas, il n'accepte pas un guid nullable.
26

Pour faire un guid all-0 "vide" comme 00000000-0000-0000-0000-000000000000 .

var makeAllZeroGuID = new System.Guid();

ou

var makeAllZeroGuID = System.Guid.Empty;

Pour faire un guide réel avec une valeur unique, ce que vous voulez probablement.

var uniqueGuID = System.Guid.NewGuid(); 
reza.cse08
la source
21
System.Guid desiredGuid = System.Guid.NewGuid();
siphab
la source
Cela semble être la nouvelle façon de procéder, à partir d'au moins 2012. Je ne semble pas avoir Guid.NewGuid () disponible en 2015.
Dave Yarwood
2
@DaveYarwood Guid est sous l'espace de noms System depuis très longtemps, et c'est ce à quoi tout le monde fait référence dans les autres réponses (il se trouve juste qu'une nouvelle classe a déjà ajouté l'Usage pour l'espace de noms System dans le modèle normal)
Skuld
18

Si vous voulez créer un Guid "souhaité", vous pouvez le faire

var tempGuid = Guid.Parse("<guidValue>");

<guidValue> serait quelque chose comme 1A3B944E-3632-467B-A53A-206305310BAE.

Zeliax
la source
2

Il y a aussi ShortGuid - Une classe GUID plus courte et conviviale en C #. Il est disponible en Nuget . Plus d'informations ici .

PM> Install-Package CSharpVitamins.ShortGuid

Usage:

Guid guid = Guid.NewGuid();
ShortGuid sguid1 = guid; // implicitly cast the guid as a shortguid
Console.WriteLine(sguid1);
Console.WriteLine(sguid1.Guid);

Cela produit un nouveau GUID, utilise ce GUID pour créer un ShortGuid et affiche les deux valeurs équivalentes dans la console. Les résultats seraient quelque chose comme:

ShortGuid: FEx1sZbSD0ugmgMAF_RGHw 
Guid:      b1754c14-d296-4b0f-a09a-030017f4461f
Joel Wiklund
la source
0

Si vous l'utilisez dans la réflexion C #, vous pouvez obtenir le guid à partir de l'attribut de propriété comme suit

var propertyAttributes= property.GetCustomAttributes();
foreach(var attribute in propertyAttributes)
{
  var myguid= Guid.Parse(attribute.Id.ToString());
}

SAliaMunch
la source
-2
//Retrive your key ID on the bases of GUID 

declare @ID as uniqueidentifier

SET @ID=NEWID()
insert into Sector(Sector,CID)

Values ('Diry7',@ID)


select SECTORID from sector where CID=@ID
sammer
la source
peut être utilisé alternatvity SCOPE.IDENTITY ()
sammer
28
C # est très différent de ce dont je me souviens.
Archibald