C # jak utworzyć wartość Guid?


Odpowiedzi:




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.


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)


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

21
System.Guid desiredGuid = System.Guid.NewGuid();

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.


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

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


-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

można stosować alternatywnie SCOPE.IDENTITY ()
sammer

28
C # wygląda zupełnie inaczej niż pamiętam.
Archibald
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.