是否可以创建相同的guids

时间:2011-02-28 10:01:01

标签: c# .net guid

是否可以在一个应用程序中创建相同的guid

Guid id = Guid.NewGuid();

6 个答案:

答案 0 :(得分:14)

技术上,是的。创建的Guid就像这样的例子:

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

这意味着32个字符可以是字母(26种可能性)或数字(10种可能性)

这意味着每个位置有36个可能,总共36 ^ 32即约。 6 000 000 000 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万个Guids(这是不可能的),你平均会得到两次创建两次相同的guid,以及所有其他的guid将是独一无二的。

所以在实践中。不;)

答案 1 :(得分:9)

如果你问Guid.NewGuid()创建重复guid的风险是否很高,那么答案是否定的。这取自Wikipedia

  

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");

答案 2 :(得分:1)

理论上?是

实际上?即使在单一应用程序中,您创建两个相同的GUID也有更高的机会连续10次赢得彩票。

请参阅Simple proof that GUID is not unique

答案 3 :(得分:0)

Guid.NewGuid()将始终在全球范围内创建一个独特的Guid,而不仅仅是在单个应用程序中。

答案 4 :(得分:-1)

GUID中的U代表Unique。 ;-)所以它应该是不可能的。

答案 5 :(得分:-1)

我实际上只是发生了这种情况。我有一个包含7个项目的数据库表。从我的程序中,我添加了一个新实例,使用Guid.NewGuid()作为其ID。我得到一个DbUpdateException告诉我ID与现有ID相同。再试一次,它运作正常。