Как использовать Guids в C #?

Ответы:

148

Вы должны использовать Guid.NewGuid()

Уилл Дин
источник
1
@Ante: если у вас есть класс Guid, то у вас есть метод NewGuid.
Guffa
61

Просто краткое объяснение того, почему вам нужно вызывать NewGuid, а не использовать конструктор по умолчанию ... В .NET все структуры (типы значений, такие как int, decimal, Guid, DateTime и т.д.) должны иметь конструктор без параметров по умолчанию, который инициализирует все значения полей по умолчанию. В случае Guid все байты, составляющие Guid, равны нулю. Вместо того, чтобы делать особый случай для Guid или делать его классом, они используют метод NewGuid для генерации нового «случайного» Guid.

Джош
источник
12

Оно в System.Guid.

Чтобы динамически создать GUID в коде:

Guid messageId = System.Guid.NewGuid();

Чтобы увидеть его значение:

string x = messageId.ToString();
ДОК
источник
Да, он должен быть там ( msdn.microsoft.com/en-us/library/system.guid_members.aspx ), но я не могу его использовать. Зачем?
Ante
«Я не могу его использовать» - что происходит, когда вы пытаетесь его использовать? Введите его вручную (возможно, возникла проблема с вашим intellisense) и попробуйте скомпилировать - вы получаете ошибки компиляции?
Мэтт Бриндли,
Что вы имеете в виду, когда говорите «не можете его использовать»? Если вы наберете Guid x = System.Guid.NewGuid () и скомпилируете, вы получите сообщение об ошибке? Или вам не нравится значение, которое вы получаете для x?
DOK
LOL да, этот алгоритм Guid иногда нуждается в новой перезагрузке. Вздох.
Джош
4

something = new Guid()равно something = Guid.Empty.

Используйте Guid.NewGuid();вместо

Уилл Ю
источник
3
 Guid g1 = Guid.NewGuid();

 string s1;
 s1 = g1.ToString();
 Console.WriteLine("{0}",s1);
 Console.ReadKey();
Лео
источник