C # jak utworzyć wartość Guid?

Odpowiedzi:

897
Guid id = Guid.NewGuid();
David
źródło
252
Jeśli, podobnie jak ja, popełnisz błąd, robiąc (new Guid (). ToString ()) otrzymasz 0000-00000-00000-00000. Musisz zrobić Guid.NewGuid (). ToString ()
Joao Carlos
12
Możesz być zainteresowany formatowania Guid zbyt msdn.microsoft.com/en-us/library/97af8hh4(v=vs.110).aspx
Anil Vangari
9
Mała korekta, nie ma funkcji „toString ()” na obiekcie Guid, jest to „ToString ()”
AB
95

Guid.NewGuid() tworzy nowy losowy przewodnik.

Adam Driscoll
źródło
83

Istnieją dwa sposoby

var guid = Guid.NewGuid();

lub

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

oba używają klasy Guid, pierwszy tworzy Obiekt Guid, drugi ciąg Guid.

Justin
źródło
47
@Justin, to taki sposób na zrobienie tego. var guid = Guid.NewGuid().ToString()po prostu zamienia go w ciąg.
Michael Meadows
@MichaelMeadows Tak, to prawda, pierwszy tworzy nowy Obiekt Guid, drugi tworzy ciąg.
Justin
34
var guid = new Guid();

Hej, to „ważny”, choć niezbyt przydatny, Guid.

(jeśli nie wiesz, identyfikator GUID to same zera. Czasami jest to konieczne, aby wskazać brak GUID, w przypadkach, gdy nie chcesz używać zerowalnego GUID)


źródło
To nie tworzy wszystkich zer. Tworzy prawidłowego Guida. Guid.Empty zwraca wszystkie zera.
FlavorScape
8
@ FlavorScape zanim spróbujesz, założę się, że 50 powtórzeń (przez nagrodę) jesteś w błędzie. Rozdać?
meh, myślałem o Guid.NewGuid (). Naprawdę zależy mi na weryfikacji nowego Guid ()
FlavorScape
11
Pokonałem cię jednym z tego rozwiązania: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
Gdy musisz przekazać identyfikator do kodu, którego nie posiadasz, nie akceptuje on zerowego identyfikatora.
26

Aby utworzyć „puste” guid dla wszystkich 0 00000000-0000-0000-0000-000000000000.

var makeAllZeroGuID = new System.Guid();

lub

var makeAllZeroGuID = System.Guid.Empty;

Aby stworzyć prawdziwy przewodnik z unikalną wartością, czego prawdopodobnie chcesz.

var uniqueGuID = System.Guid.NewGuid(); 
reza.cse08
źródło
21
System.Guid desiredGuid = System.Guid.NewGuid();
syfon
źródło
Wydaje się, że jest to nowy sposób na zrobienie tego, przynajmniej od 2012 r. Wydaje mi się, że Guid.NewGuid () nie jest dostępny w 2015 r.
Dave Yarwood
2
@DaveYarwood Guid znajduje się w przestrzeni nazw Systemu od bardzo dawna i jest to, do czego wszyscy inni odnoszą się w innych odpowiedziach (okazuje się, że nowa klasa ma już dodaną opcję Użycie dla Przestrzeni nazw systemu w normalny szablon)
Skuld
18

Jeśli chcesz stworzyć „pożądany” przewodnik, możesz to zrobić

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

gdzie <guidValue>byłoby coś takiego 1A3B944E-3632-467B-A53A-206305310BAE.

Zeliax
źródło
2

Istnieje również ShortGuid - krótsza i przyjazna dla URL klasa GUID w języku C #. Jest dostępny jako Nuget . Więcej informacji tutaj .

PM> Install-Package CSharpVitamins.ShortGuid

Stosowanie:

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

Spowoduje to utworzenie nowego identyfikatora GUID, użycie tego identyfikatora do utworzenia ShortGuid i wyświetlenie dwóch równoważnych wartości w konsoli. Wyniki byłyby podobne do:

ShortGuid: FEx1sZbSD0ugmgMAF_RGHw 
Guid:      b1754c14-d296-4b0f-a09a-030017f4461f
Joel Wiklund
źródło
0

Jeśli używasz tego w Reflection C #, możesz uzyskać identyfikator GUID z atrybutu właściwości w następujący sposób

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

SAliaMunch
źródło
-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
źródło
można stosować alternatywnie SCOPE.IDENTITY ()
sammer
28
C # wygląda zupełnie inaczej niż pamiętam.
Archibald