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