Подтвердить что ты не робот

NewGuid vs System.Guid.NewGuid(). ToString ( "D" );

Есть ли разница, когда вы генерируете GUID с помощью NewGuid(); vs System.Guid.NewGuid().ToString("D");, или это одно и то же?

4b9b3361

Ответ 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.