如何在没有数据库的情况下在c#中生成唯一编号?
(最多17位)。
编辑:仅限数字。
答案 0 :(得分:6)
你可以看看Twitter的开源Snowflake project获取灵感,这解决了类似的问题。它是用Scala编写的,但简化版本在C#中编码非常简单。
前提是获取当前时间戳,并将其向左移位,使右侧位可用于一个简单的序列号,每次时间戳递增时,该序列号将重置为0.
通过使用比特长度,并改变时间戳的粒度(例如,决定是使用秒还是毫秒),你应该能够生成一些可以很简单地适合17位数的东西。
答案 1 :(得分:0)
您可以使用GUID,GUID(全局唯一标识符)是一个128位整数,可用于唯一标识某些内容。
System.Guid.NewGuid()