gpt4 book ai didi

c# - 如何生成绝对唯一的 GUID?

转载 作者:太空狗 更新时间:2023-10-29 20:42:40 25 4
gpt4 key购买 nike

有没有办法每次都生成 100% 的新 GUID 而不会在整个应用程序中发生冲突?

由于我无法在八小时内回答我的问题,所以我想出了解决方案:

internal static class GuidGenerator
{
private static readonly HashSet<Guid> _guids = new HashSet<Guid>();

internal static Guid GetOne()
{
Guid result;

lock (_guids)
while (!_guids.Add(result = Guid.NewGuid())) ;

return result;
}
internal static void Utilize(Guid guid)
{
lock (_guids)
_guids.Remove(guid);
}
}

此代码是否解决了应用内的问题?

编辑:呃,它变得复杂了。线程安全扼杀了速度。

最佳答案

不,没有任何方法可以生成绝对唯一 GUID。只有 3.40282367 × 1038 可能的 GUID,因此当星系发生碰撞时,这些标识符也会发生碰撞。即使对于单个应用程序,它也取决于应用程序具有多少个 GUID。除非您的应用程序大于所有 Google 索引器的总和,否则您不必为此失眠。只需使用 Guid.NewGuid()

关于c# - 如何生成绝对唯一的 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com