c# - 可以使用 DateTime.Now 的 Ticks 生成重复的唯一标识符吗?
问题描述
此代码是否有可能生成相同的身份,
for (int i = 0; i < 20; i++)
{
string TransID = DateTime.Now.Ticks.ToString();
}
导致这种情况发生的考虑因素是什么?
解决方案
是的,此代码可以生成相同的标识符。
无论刻度精度如何,如果系统日期在 Windows 和/或 Bios 中更改,它都可以这样做。
如果它是由不同时区的计算机运行的,或者如果你旅行。
后一种情况意味着您绝对不应该在本地和未连接的应用程序中使用这样的代码。
如果您需要个人和本地应用程序的 ID,并且您从不旅行,则此代码可以满足您的需求,但不建议使用这种糟糕的模式。
正如大家所说,没有错,您应该使用Guid.New()
哪个实际上是最安全的标准,或者在某些情况下使用 int 或 long 自动增量(用于本地或由服务器管理)以获得更好的性能。
https://docs.microsoft.com/dotnet/api/system.datetime.now
https://en.wikipedia.org/wiki/Unique_identifier
推荐阅读
- javascript - 使用鼠标悬停删除生成的输入区域
- audio - ffmpeg 复杂过滤:如何绕过
- windows - Atom 文本编辑器无法在 Windows 上保存 .htaccess
- mysql - MySQL UUID 函数在用作函数参数时产生相同的值
- c# - 无需在 Google 中启用安全性较低的应用即可发送电子邮件
- reactjs - 我的异步函数运行不正确
- ajax - 有 xhr 请求时网站加载缓慢
- python - 如何在python中将.txt转换为.xml
- c++ - C++ 多线程方法 const 类对象
- python - 为什么我在运行代码时不断收到错误消息说“列表”对象没有属性条?