C # ¿cómo crear un valor Guid?

Respuestas:

897
Guid id = Guid.NewGuid();
David
fuente
252
Si usted, como yo, comete el error de hacer (new Guid (). ToString ()) obtendrá 0000-00000-00000-00000. Necesitas hacer Guid.NewGuid (). ToString ()
Joao Carlos
12
También puede estar interesado en formatear Guid msdn.microsoft.com/en-us/library/97af8hh4(v=vs.110).aspx
Anil Vangari
99
Pequeña corrección, no existe la función 'toString ()' en el objeto Guid, es 'ToString ()'
AB
95

Guid.NewGuid() crea un nuevo guid aleatorio.

Adam Driscoll
fuente
83

Hay dos maneras

var guid = Guid.NewGuid();

o

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

ambos usan la clase Guid, el primero crea un Objeto Guid, el segundo una cadena Guid.

Justin
fuente
47
@Justin, esa es una forma de hacerlo. var guid = Guid.NewGuid().ToString()solo lo convierte en una cuerda.
Michael Meadows
@MichaelMeadows Sí, eso es correcto, el primero crea un nuevo objeto Guid, el segundo crea una cadena.
Justin
34
var guid = new Guid();

Oye, es un 'válido', aunque no muy útil, Guid.

(el guid es todo ceros, si no lo sabe. A veces esto es necesario para indicar que no hay guid, en los casos en que no desee usar un Guid que pueda contener nulos)


fuente
Eso no crea todos los ceros. Crea un Guid válido. Guid.Empty devuelve todos los ceros.
FlavorScape
8
@FlavorScape antes de intentarlo, apuesto a que 50 repeticiones (a través de la recompensa) está equivocado. ¿Acuerdo?
meh, estaba pensando en Guid.NewGuid (). Realmente me importa verificar el nuevo Guid ()
FlavorScape
11
Te gané por uno con esta solución: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
Cuando debe pasar un guid al código que no posee que no acepta un guid anulable.
26

To hace un guid de "0" como "vacío" 00000000-0000-0000-0000-000000000000.

var makeAllZeroGuID = new System.Guid();

o

var makeAllZeroGuID = System.Guid.Empty;

Para hacer un guid real con un valor único, lo que probablemente quieras.

var uniqueGuID = System.Guid.NewGuid(); 
reza.cse08
fuente
21
System.Guid desiredGuid = System.Guid.NewGuid();
siphab
fuente
Esta parece ser la nueva forma de hacerlo, a partir de al menos 2012. Parece que no tengo Guid.NewGuid () disponible en 2015.
Dave Yarwood
2
@DaveYarwood Guid ha estado bajo el espacio de nombres del Sistema durante mucho tiempo, y es a lo que todos los demás se refieren en las otras respuestas (simplemente resulta que una nueva clase ya tiene el Uso agregado para el Espacio de Nombres del Sistema en el plantilla normal)
Skuld
18

Si desea crear una guía "deseada", puede hacerlo

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

¿Dónde <guidValue>sería algo así 1A3B944E-3632-467B-A53A-206305310BAE?

Zeliax
fuente
2

También hay ShortGuid: una clase GUID más corta y fácil de usar en C #. Está disponible como Nuget . Más información aquí .

PM> Install-Package CSharpVitamins.ShortGuid

Uso:

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

Esto produce un nuevo guid, lo utiliza para crear un ShortGuid y muestra los dos valores equivalentes en la consola. Los resultados serían algo similar a:

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

Si está usando esto en Reflection C #, puede obtener el guid del atributo de propiedad de la siguiente manera

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

SAliaMunch
fuente
-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
fuente
se puede usar como alternativa SCOPE.IDENTITY ()
sammer
28
C # se ve muy diferente de lo que recuerdo.
Archibald