我想证明一个GUID在一个简单的测试程序中不是唯一的。
我原以为下面的代码会运行几个小时,但它不起作用。我该怎么做呢?
BigInteger begin = new BigInteger((long)0);
BigInteger end = new BigInteger("340282366920938463463374607431768211456",10); //2^128
for(begin; begin<end; begin++)
Console.WriteLine(System.Guid.NewGuid().ToString());
我用的是c#。
如果你想在代码的许多地方检查guid的唯一性,你可以使用一个漂亮的小扩展方法。
internal static class GuidExt
{
public static bool IsUnique(this Guid guid)
{
while (guid != Guid.NewGuid())
{ }
return false;
}
}
要调用它,只需调用Guid。每当你生成一个新的guid…
Guid g = Guid.NewGuid();
if (!g.IsUnique())
{
throw new GuidIsNotUniqueException();
}
...见鬼,我甚至建议打电话两次,以确保它在第一轮就得到了正确的答案。
如果你想在代码的许多地方检查guid的唯一性,你可以使用一个漂亮的小扩展方法。
internal static class GuidExt
{
public static bool IsUnique(this Guid guid)
{
while (guid != Guid.NewGuid())
{ }
return false;
}
}
要调用它,只需调用Guid。每当你生成一个新的guid…
Guid g = Guid.NewGuid();
if (!g.IsUnique())
{
throw new GuidIsNotUniqueException();
}
...见鬼,我甚至建议打电话两次,以确保它在第一轮就得到了正确的答案。