【问题标题】:How do I generate an ID that is garunteed to be unique? [duplicate]如何生成保证唯一的 ID? [复制]
【发布时间】:2015-09-22 17:47:38
【问题描述】:

我需要保证 ID 的唯一性。即使有 1 万亿分之一的机会被骗,我也无法使用它。

但我也不太想去天涯海角寻找解决方案。我花了一些时间研究这个问题,但迄今为止我发现的所有内容都无法为我提供一个唯一的 ID。

所以我想我会使用一些非常简单的东西,像这样:

    public static string GenerateItemID()
    {
        string year = DateTime.Now.Year.ToString(), 
            month = DateTime.Now.Month.ToString(), 
            day = DateTime.Now.Day.ToString(), 
            hour = DateTime.Now.Hour.ToString(), 
            minute = DateTime.Now.Minute.ToString(), 
            second = DateTime.Now.Second.ToString(), 
            millisecond = DateTime.Now.Millisecond.ToString();

        return year + month + day + hour + minute + second + millisecond;
    }

我的逻辑是:生成的每个新 UI 不可能与之前的任何一个相同。但后来我想知道 PC 是否有可能在同一毫秒内生成两个或更多这样的 ID?当然,我随后在 Intellisense 中查找了纳秒属性,但它不存在。

如何生成保证唯一的 ID?

【问题讨论】:

  • 你从哪里买到了一个永远不会产生错误结果的处理器?

标签: c#


【解决方案1】:
var id = Guid.NewGuid(); 

我相信这会创建一个相当独特的 id。

【讨论】:

  • GUID garunteedalways 是否是唯一的?我读到还有一些重复的余地。
  • 我想有十亿分之一的机会。您可以使用“while”并说 while(id 不是唯一的)生成新的 guid?
  • Guids 很可能就足够了,查看这篇文章了解更多信息:blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx
  • 您可以在毫秒后添加一个随机的 8 位数字。 stackoverflow.com/questions/1344221/…
  • 然后添加逻辑以在您尝试插入的 GUID 失败时重试生成新的 GUID...
【解决方案2】:

让我们使用 GUID。

参考这里:https://msdn.microsoft.com/en-us/library/system.guid.newguid(v=vs.110).aspx

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2010-11-15
    • 2016-08-21
    • 2014-05-02
    • 1970-01-01
    • 2011-09-25
    • 2018-05-04
    • 2012-04-27
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多