Como usar Guids em C #?

89

Este código:

Something = new Guid() 

está voltando:

00000000-0000-0000-0000-000000000000

o tempo todo e não sei dizer por quê? Então por que?

Ante
fonte
Possível duplicata de C # como criar um valor Guid?
UuDdLrLrSs

Respostas:

148

Você deveria usar Guid.NewGuid()

Will Dean
fonte
1
@Ante: Se você tem a classe Guid, então você tem o método NewGuid.
Guffa
61

Apenas uma rápida explicação de por que você precisa chamar NewGuid em vez de usar o construtor padrão ... Em .NET todas as estruturas (tipos de valor como int, decimal, Guid, DateTime, etc) devem ter um construtor sem parâmetros padrão que inicializa todos os os campos com seus valores padrão. No caso do Guid, os bytes que compõem o Guid são todos zero. Em vez de fazer um caso especial para o Guid ou torná-lo uma classe, eles usam o método NewGuid para gerar um novo Guid "aleatório".

Josh
fonte
12

Está dentro System.Guid.

Para criar dinamicamente um GUID no código:

Guid messageId = System.Guid.NewGuid();

Para ver seu valor:

string x = messageId.ToString();
DOK
fonte
Sim, deveria estar lá ( msdn.microsoft.com/en-us/library/system.guid_members.aspx ), mas não posso usá-lo. Por quê?
Ante
"Não consigo usar" - o que acontece quando você tenta usá-lo? Digite-o manualmente (talvez haja um problema com o seu intellisense) e tente compilar - você obtém erros de compilação?
Matt Brindley
O que você quer dizer quando diz que "não pode usar"? Se você digitar Guid x = System.Guid.NewGuid () e compilar, você obtém um erro? Ou você não gosta do valor que está obtendo por x?
DOK
LOL sim, que o algoritmo Guid às vezes precisa de uma nova reinicialização. Suspiro.
Josh
4

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

Use ao Guid.NewGuid();invés

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

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