在应用程序,创建特殊类型的对象的时候,我需要生成一个唯一ID为他们每个人。这些对象是在工厂创建的,并且很有可能在“批量”操作中创建。我认识到“随机”从框架毕竟不是那么“随机”,所以我试图追加时间戳如下:备用唯一ID生成技术
private string GenerateUniqueId()
{
Random randomValue = new Random();
return DateTime.Now.Ticks.ToString() + randomValue.Next().ToString();
}
不幸的是,即使这是行不通的。
private string GenerateUniqueId()
{
Random randomValue = new Random();
int value = randomValue.Next();
Debug.WriteLine(value.ToString());
Thread.Sleep(100);
return DateTime.Now.Ticks.ToString() + value.ToString();
}
因为这不是一个非常大的应用程序:对于在连续快速创建的对象,我产生相同的唯一标识:-(
目前,我在一个粗暴的方式如下实现它我想简单快捷的技术就足够了,而不是实现一个复杂的算法
请建议
你不应该创建方法里面的`Random`对象。有一个静态对象(或者``ThreadStatic``),这样你就可以保证一串伪随机数。你可能不需要`DateTime.Now。蜱“然后。但使用GUID是一个更好的主意。 – 2009-02-24 18:34:32