¿Cómo usar Guids en C #?

89

Este Código:

Something = new Guid() 

está regresando:

00000000-0000-0000-0000-000000000000

todo el tiempo y no puedo decir por qué? ¿Entonces por qué?

Apuesta inicial
fuente
Posible duplicado de C # ¿cómo crear un valor Guid?
UuDdLrLrSs

Respuestas:

148

Deberías usar Guid.NewGuid()

Will Dean
fuente
1
@Ante: Si tiene la clase Guid, entonces tiene el método NewGuid.
Guffa
61

Solo una explicación rápida de por qué necesita llamar a NewGuid en lugar de usar el constructor predeterminado ... En .NET todas las estructuras (tipos de valor como int, decimal, Guid, DateTime, etc.) deben tener un constructor sin parámetros predeterminado que inicialice todos los los campos a su valor predeterminado. En el caso de Guid, los bytes que componen el Guid son todos cero. En lugar de hacer un caso especial para Guid o convertirlo en una clase, usan el método NewGuid para generar un nuevo Guid "aleatorio".

Josh
fuente
12

Está dentro System.Guid.

Para crear dinámicamente un GUID en código:

Guid messageId = System.Guid.NewGuid();

Para ver su valor:

string x = messageId.ToString();
DOK
fuente
Sí, debería estar allí ( msdn.microsoft.com/en-us/library/system.guid_members.aspx ) pero no puedo usarlo. ¿Por qué?
Ante
"No puedo usarlo": ¿qué sucede cuando intentas usarlo? Escríbalo manualmente (tal vez haya un problema con su intellisense) e intente compilar: ¿obtiene errores de compilación?
Matt Brindley
¿A qué te refieres cuando dices que "no puedes usarlo"? Si escribe Guid x = System.Guid.NewGuid () y compila, ¿obtiene un error? ¿O no le gusta el valor que obtiene por x?
DOK
LOL, sí, el algoritmo Guid a veces necesita un reinicio nuevo. Suspiro.
Josh
4

something = new Guid()es igual something = Guid.Empty.

Utilizar en su Guid.NewGuid();lugar

Will Yu
fuente
3
 Guid g1 = Guid.NewGuid();

 string s1;
 s1 = g1.ToString();
 Console.WriteLine("{0}",s1);
 Console.ReadKey();
León
fuente