2009-05-24 11 views
85

este código:¿Cómo usar las guías en C#?

Something = new Guid() 

está regresando:

00000000-0000-0000-0000-000000000000

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

+0

duplicado posible de [C# cómo crear un valor Guid?] (Http://stackoverflow.com/questions/2344098/c-sharp-how-to-create-a-guid- valor) – DaveInCaz

Respuesta

145

Debe utilizar Guid.NewGuid()

+1

@Ante: si tiene la clase Guid, entonces tiene el método NewGuid. – Guffa

+3

Algo = Guid.NewGuid() funciona. –

60

Sólo una breve explicación de por qué es necesario llamar a NewGuid en lugar de utilizar el constructor por defecto ... En .NET todas las estructuras (tipos de valor como int, decimal, Guid, DateTime, etc.) debe tener un constructor sin parámetros predeterminado que inicialice todos los campos a su valor predeterminado. En el caso de Guid, los bytes que componen el Guid son todos cero. En lugar de crear un caso especial para Guid o convertirlo en una clase, utilizan el método NewGuid para generar una nueva Guid "aleatoria".

+5

Enlace relevante de MSDN: http://msdn.microsoft.com/en-us/library/83fhsxwc(VS.80).aspx – jason

12

Está en System.Guid.

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

Guid messageId = System.Guid.NewGuid(); 

Para ver su valor:

string x = messageId.ToString(); 
+0

Sí, debería estar allí (http://msdn.microsoft.com/en-us /library/system.guid_members.aspx) pero no puedo usarlo. ¿Por qué? – Ante

+0

"No puedo usarlo": ¿qué sucede cuando intentas usarlo? Tipea de forma manual (tal vez haya un problema con tu intellisense) y trata de compilar: ¿obtienes errores de compilación? –

+0

¿A qué te refieres cuando dices que "no puedes usarlo"? Si escribe Guid x = System.Guid.NewGuid() y compila, ¿recibe un error? ¿O no te gusta el valor que obtienes por x? – DOK

3
Guid g1 = Guid.NewGuid(); 

string s1; 
s1 = g1.ToString(); 
Console.WriteLine("{0}",s1); 
Console.ReadKey(); 
3

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

Uso Guid.NewGuid(); lugar