Можно ли создать идентичные GUID

возможно ли создать идентичные GUID в одном приложении

Guid id = Guid.NewGuid();

6 ответов


технически, да. Созданный Guid выглядит, например, следующим образом:

26de36b7-76f5-4f17-8f9d-44eb429f151b

это означает 32 символа, которые могут быть буквой (26 возможностей) или цифрой (10 возможностей)

это означает 36 возможностей на позицию в общей сложности 36^32, что приблизительно. 60 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000.

это означает, что если вы создадите 2 000 000 000 000 000 000 000 000 000 000 000 000 000 Guids каждую миллисекунду (что невозможно), вы в среднем получите один и тот же guid, созданный дважды один раз, и все остальные GUID будут уникальными.

Так на практике. Нет;)


Если вы спрашиваете, если риск Guid.NewGuid() создание дубликатов GUID является высоким, то ответ нет. Это взято из Википедия:

значение GUID представляется в виде 32-символьной шестнадцатеричной строки, например {21EC2020-3AEA-1069-A2DD-08002B30309D}, и обычно хранится в виде 128-разрядного целого числа. Общее количество уникальных ключей составляет 2128 или 3,4×1038-примерно 2 триллиона на кубический миллиметр всего объема Земли. Это так велика вероятность того, что одно и то же число будет генерироваться дважды, чрезвычайно мала.

Если вы спрашиваете нас, как создать два дубликата GUID, то это ответ:

Guid g1 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");
Guid g2 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");

теоретизации? Да

практически? У вас больше шансов выиграть лотерею 10 раз подряд, чем создать два одинаковых GUID, даже в одном приложении.

посмотреть простое доказательство того, что GUID не уникален


Guid.NewGuid () всегда будет создавать уникальный Guid по всему миру, а не только внутри одного приложения.


U в GUID означает уникальный. ;-) Так что это не должно быть возможно.


Я на самом деле только что это произошло. У меня была таблица базы данных, содержащая 7 пунктов. Из моей программы, я добавил новый экземпляр, используя Guid.NewGuid() по его ID. У меня DbUpdateException говоря мне, что идентификатор идентичен существующему. Попробовал еще раз, он отлично работает.