我想证明一个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());
Run Code Online (Sandbox Code Playgroud)
我正在使用C#.
我目前正在开发一种产品(用C#开发),可以免费下载和安装,但版本非常有限.要访问所有功能,用户必须支付许可费并获得密钥.然后将该密钥输入应用程序以"解锁"完整版本.
因为使用像这样的许可证密钥,我想知道:
我想我也应该以某种方式将密钥绑定到应用程序的版本,这样就可以在功能版本中为新密钥收费.
在这种情况下我还应该考虑其他什么吗?
我尝试在我们的C#应用程序中使用long作为唯一ID(不是全局的,仅用于一个会话)用于我们的事件.你知道以下是否会生成一个唯一的长ID?
public long GenerateId()
{
byte[] buffer = Guid.NewGuid().ToByteArray();
return BitConverter.ToInt64(buffer, 0);
}
Run Code Online (Sandbox Code Playgroud)
为什么我们不直接使用GUID?我们认为8字节长就足够了.