Есть ли разница, когда вы генерируете GUID с помощью NewGuid();
vs System.Guid.NewGuid().ToString("D");
, или это одно и то же?
NewGuid vs System.Guid.NewGuid(). ToString ( "D" );
Ответ 1
Guid.NewGuid().ToString()
представляет собой строковое представление GUID, то есть возвращает объект string
, а Guid.NewGuid()
возвращает Guid
тип данных.
Ответ 2
Я понимаю, что у этого вопроса уже есть принятый ответ, но я подумал, что было бы полезно поделиться некоторой информацией о форматировании команд.
Метод ToString() (без параметров) форматирует направляющую, используя этот формат:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Метод ToString (строковый формат) форматирует guid в одном из нескольких способов:
"N" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (32 digits)
"D" - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (32 digits separated by hyphens)
"B" - {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (same as "D" with addition of braces)
"P" - (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) (same as "D" with addition of parentheses)
"X" - {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
Вызов Guid.ToString("D")
дает тот же результат, что и вызов Guid.ToString()
.
Как упоминалось в других ответах, руководство не имеет формата. Это просто ценность. Обратите внимание, что вы можете создавать подсказки с помощью NewGuid или с помощью конструктора guid. Используя NewGuid, вы не контролируете значение guid. Используя конструктор guid, вы можете управлять значением. Использование конструктора полезно, если у вас уже есть строковое представление руководства (возможно, вы читаете его из базы данных) или если вы хотите упростить интерпретацию руководства во время разработки. Вы также можете использовать Parse, ParseExact, TryParse и TryParseExact методы.
Итак, вы можете создавать такие типы:
Guid g1 = Guid.NewGuid(); //Get a Guid without any control over the contents
Guid g2 = new Guid(new string('A',32)); //Get a Guid where all digits == 'A'
Guid g3 = Guid.Parse(g1.ToString());
Guid g4 = Guid.ParseExact(g1.ToString("D"),"D");
Guid g5;
bool b1 = Guid.TryParse(g1.ToString(), out g5);
Guid g6;
bool b2 = Guid.TryParseExact(g1.ToString("D"),"D", out g6);
Ответ 3
Используя System.Guid.NewGuid()
, вы получите объект Guid
type
Используя System.Guid.NewGuid().ToString("D");
, вы получите строковое представление объекта Guid
Кроме того, поскольку я не знаю разницы между .ToString("D")
и .ToString()
Ответ 4
Алгоритм генерации должен быть одинаковым для обоих, поскольку System.Guid.NewGuid().ToString("D")
вызывает System.Guid.NewGuid()
, а затем вызывает ToString
в результате, т.е. оба ваших примера вызывают один и тот же метод для генерации guid. Что касается сравнения "формата" - это не имеет смысла, потому что System.Guid.NewGuid()
не имеет "формат" таким же образом, как и System.Guid.NewGuid().ToString("D")
- это только вызов метода ToString
, который вы даете внутреннему представлению guid - внешний, строковый формат. Формат, который принимает строка, будет зависеть от аргумента, который вы передаете методу string.