C # como criar um valor Guid?

Respostas:

897
Guid id = Guid.NewGuid();
David
fonte
252
Se você, como eu, cometer o erro de fazer (new Guid (). ToString ()), receberá 0000-00000-00000-00000. Você precisa fazer Guid.NewGuid (). ToString ()
Joao Carlos
12
Você pode estar interessado em formatação Guid também msdn.microsoft.com/en-us/library/97af8hh4(v=vs.110).aspx
Anil Vangari
9
Pouca correção, não há função 'toString ()' no objeto Guid, é 'ToString ()'
AB
95

Guid.NewGuid() cria um novo guia aleatório.

Adam Driscoll
fonte
83

Existem duas maneiras

var guid = Guid.NewGuid();

ou

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

ambos usam a classe Guid; o primeiro cria um objeto Guid; o segundo, uma sequência Guid.

Justin
fonte
47
@ Justin, é uma maneira de fazer isso. var guid = Guid.NewGuid().ToString()apenas o transforma em uma string.
Michael Meadows
@MichaelMeadows Sim, está correto, o primeiro cria um novo Objeto Guid, o segundo cria uma string.
Justin Justin
34
var guid = new Guid();

Ei, é um Guid 'válido', embora não seja muito útil.

(o guia é todo zeros, se você não souber. Às vezes isso é necessário para indicar nenhum guia, nos casos em que você não deseja usar um guia nulo)


fonte
Isso não cria todos os zeros. Ele cria um Guid válido. Guid.Empty retorna todos os zeros.
FlavorScape
8
@FlavorScape antes de tentar, aposto que 50 rep (via recompensa) você está errado. Combinado?
meh, eu estava pensando em Guid.NewGuid (). Realmente me importo em verificar o novo Guid ()
FlavorScape
11
Eu venci você por um com esta solução: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
Quando você deve passar um guia para codificar, não é seu proprietário que não aceita um guia nulo.
26

Para criar um guid all-0 "vazio" 00000000-0000-0000-0000-000000000000.

var makeAllZeroGuID = new System.Guid();

ou

var makeAllZeroGuID = System.Guid.Empty;

Para criar um guia real com um valor único, o que você provavelmente deseja.

var uniqueGuID = System.Guid.NewGuid(); 
reza.cse08
fonte
21
System.Guid desiredGuid = System.Guid.NewGuid();
siphab
fonte
Esta parece ser a nova maneira de fazer isso, a partir de, pelo menos, 2012. Eu não parecem ter Guid.NewGuid () disponível em 2015.
Dave Yarwood
2
O @DaveYarwood Guid está no espaço de nomes System há muito tempo e é o que todos os outros estão se referindo nas outras respostas (acontece que uma nova classe já tem o Using adicionado no espaço de nomes do sistema no diretório (normal template))
Skuld
18

Se você deseja criar um Guid "desejado", pode fazer

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

onde <guidValue>seria algo parecido 1A3B944E-3632-467B-A53A-206305310BAE.

Zeliax
fonte
2

Há também ShortGuid - uma classe GUID mais curta e amigável ao URL em C #. Está disponível como um Nuget . Mais informações aqui .

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);

Isso produz um novo guia, usa esse guia para criar um ShortGuid e exibe os dois valores equivalentes no console. Os resultados seriam algo como:

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

Se você estiver usando isso no Reflection C #, poderá obter o guid do atributo de propriedade da seguinte maneira

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

SAliaMunch
fonte
-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
fonte
pode ser usado alternatvity SCOPE.IDENTITY ()
sammer
28
C # parece muito diferente do que eu me lembro.
Archibald