Jak korzystać z Guidów w C #?

89

Ten kod:

Something = new Guid() 

powraca:

00000000-0000-0000-0000-000000000000

cały czas i nie potrafię powiedzieć dlaczego? Więc dlaczego?

Ante
źródło
Możliwy duplikat C #, jak utworzyć wartość Guid?
UuDdLrLrSs

Odpowiedzi:

148

Powinieneś użyć Guid.NewGuid()

Will Dean
źródło
1
@Ante: Jeśli masz klasę Guid, masz metodę NewGuid.
Guffa
61

Tylko krótkie wyjaśnienie, dlaczego musisz wywołać NewGuid, a nie używać domyślnego konstruktora ... W .NET wszystkie struktury (typy wartości, takie jak int, decimal, Guid, DateTime itp.) Muszą mieć domyślny konstruktor bez parametrów, który inicjuje wszystkie pola do ich wartości domyślnych. W przypadku Guid wszystkie bajty tworzące Guid mają wartość zero. Zamiast tworzyć specjalny przypadek dla Guid lub uczynić go klasą, używają metody NewGuid do wygenerowania nowego „losowego” Guid.

Josh
źródło
12

To jest w System.Guid.

Aby dynamicznie utworzyć identyfikator GUID w kodzie:

Guid messageId = System.Guid.NewGuid();

Aby zobaczyć jego wartość:

string x = messageId.ToString();
DOK
źródło
Tak, powinien tam być ( msdn.microsoft.com/en-us/library/system.guid_members.aspx ), ale nie mogę go używać. Czemu?
Ante
„Nie mogę tego użyć” - co się stanie, gdy spróbujesz go użyć? Wpisz go ręcznie (być może jest problem z Twoim inteligencją) i spróbuj skompilować - czy otrzymujesz błędy kompilacji?
Matt Brindley
Co masz na myśli, mówiąc, że „nie możesz tego użyć”? Jeśli wpiszesz Guid x = System.Guid.NewGuid () i skompilujesz, czy pojawi się błąd? A może nie podoba ci się wartość, którą otrzymujesz za x?
DOK
LOL tak, że algorytm Guid czasami wymaga ponownego uruchomienia. Westchnienie.
Josh,
4

something = new Guid()równa się something = Guid.Empty.

Użyj Guid.NewGuid();zamiast tego

Will Yu
źródło
3
 Guid g1 = Guid.NewGuid();

 string s1;
 s1 = g1.ToString();
 Console.WriteLine("{0}",s1);
 Console.ReadKey();
Lew
źródło