按照 C# 中的“digitStringDigit”等特定模式生成唯一 ID

Posted

技术标签:

【中文标题】按照 C# 中的“digitStringDigit”等特定模式生成唯一 ID【英文标题】:Generate Unique ID following a specific pattern like "digitStringDigit" in C# 【发布时间】:2011-04-20 04:14:48 【问题描述】:

我之前通过使用 Math.Rando 方法或有时使用 GUID.NewGUID 方法生成了唯一 ID。这次我试图生成一个基于特定模式的唯一数字。

例如 123ABC123 - 数字的长度将始终保持为 9,它将包含 3 个数字,后跟三个字符,然后再跟三个数字。

【问题讨论】:

这些是否需要在多个应用程序中是唯一的?仅在您的应用程序中独一无二?这些 id 是否可以从单个点生成(例如,IdGenerator 类的静态 GetId() 方法?) 这需要在应用程序中是唯一的,是的,它们可以从单个点生成 “需要在应用程序中是唯一的”非常令人困惑;您在谈论多个应用程序吗?它们是否同时运行?在不同的机器上? 【参考方案1】:

如果我想要一个纯粹的唯一 ID,我会使用:

 TimeSpan uniqueID = DateTime.Now.ticks;

无论您何时调用它,都可以保证您获得一个唯一的 ID。

【讨论】:

如果有人让时光倒流怎么办? datetime.now.ticks 使用 PC 内部的 CMOS 时钟。除非您的用户要对 PC 进行重大物理更改,否则这应该是一种非常安全的生成唯一 ID 的方法 那个时钟还是用户设置的那个时钟。 你不懂。 datetime.now.ticks 不是基于您在系统托盘中看到的时钟。 datetime.now.ticks 源自 CPU 内部时钟。 我不知道你从哪里得到你的信息。去看看 DateTime.Ticks.get 的源代码。它返回 InternalTicks.get,它返回存储所有其他时间部分的相同字段。该字段是自..以来的毫秒数。无论日期是什么,我不记得了。该值来自主板上的实时时钟。

以上是关于按照 C# 中的“digitStringDigit”等特定模式生成唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章

C#窗体中按钮按照一定规则摆放位置的算法

C#中的继承

C#版剑指Offer-001二维数组中的查找

c# 中的规则引擎设计和示例

C#枚举中的保留关键字

$ 在 C# 中的用法