是否可以在一个应用程序中创建相同的guid
Guid id = Guid.NewGuid();
答案 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)
答案 3 :(得分:0)
Guid.NewGuid()将始终在全球范围内创建一个独特的Guid,而不仅仅是在单个应用程序中。
答案 4 :(得分:-1)
GUID中的U代表Unique。 ;-)所以它应该是不可能的。
答案 5 :(得分:-1)
我实际上只是发生了这种情况。我有一个包含7个项目的数据库表。从我的程序中,我添加了一个新实例,使用Guid.NewGuid()
作为其ID。我得到一个DbUpdateException
告诉我ID与现有ID相同。再试一次,它运作正常。