Wie verwende ich Guids in C #?

89

Dieser Code:

Something = new Guid() 

kehrt zurück:

00000000-0000-0000-0000-000000000000

die ganze Zeit und ich kann nicht sagen warum? Warum also?

Ante
quelle
Mögliches Duplikat von C # Wie erstelle ich einen Guid-Wert?
UuDdLrLrSs

Antworten:

148

Du solltest benutzen Guid.NewGuid()

Will Dean
quelle
1
@Ante: Wenn Sie die Guid-Klasse haben, haben Sie die NewGuid-Methode.
Guffa
61

Nur eine kurze Erklärung, warum Sie NewGuid aufrufen müssen, anstatt den Standardkonstruktor zu verwenden ... In .NET müssen alle Strukturen (Werttypen wie int, decimal, Guid, DateTime usw.) einen standardmäßigen parameterlosen Konstruktor haben, der alle initialisiert die Felder auf ihren Standardwert. Im Fall von Guid sind die Bytes, aus denen die Guid besteht, alle Null. Anstatt einen Sonderfall für Guid oder eine Klasse zu erstellen, verwenden sie die NewGuid-Methode, um eine neue "zufällige" Guid zu generieren.

Josh
quelle
12

Es ist in System.Guid.

So erstellen Sie dynamisch eine GUID im Code:

Guid messageId = System.Guid.NewGuid();

Um seinen Wert zu sehen:

string x = messageId.ToString();
DOK
quelle
Ja, es sollte vorhanden sein ( msdn.microsoft.com/en-us/library/system.guid_members.aspx ), aber ich kann es nicht verwenden. Warum?
Ante
"Ich kann es nicht benutzen" - was passiert, wenn Sie versuchen, es zu benutzen? Geben Sie es manuell ein (möglicherweise liegt ein Problem mit Ihrem Intellisense vor) und versuchen Sie zu kompilieren. Erhalten Sie Kompilierungsfehler?
Matt Brindley
Was meinst du, wenn du sagst, dass du es nicht benutzen kannst? Wenn Sie Guid x = System.Guid.NewGuid () eingeben und kompilieren, erhalten Sie eine Fehlermeldung? Oder gefällt Ihnen der Wert, den Sie für x erhalten, nicht?
DOK
LOL ja, dass der Guid-Algorithmus manchmal einen neuen Neustart benötigt. Seufzer.
Josh
4

something = new Guid()gleich something = Guid.Empty.

Verwenden Sie Guid.NewGuid();stattdessen

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

 string s1;
 s1 = g1.ToString();
 Console.WriteLine("{0}",s1);
 Console.ReadKey();
Löwe
quelle