c# - Guid.NewGuid(); .NET Core 的幕后

标签 c# .net-core uuid guid

昨天研究这个主题,我发现了几个关于 GUID 最终如何生成的有趣问题(例如 this one)。简单来说;似乎 Guid.NewGuid(); 在 COM 中调用 CoCreateGuid,它又在 Windows RPC 中调用 UuidCreate(文档 herehere )。

我发现自己在想;当操作系统不是 Windows 时,这是如何工作的,例如 .NET Core 的情况,这是否会影响 'version' algorithm用于生成 GUID(据我所知是 Windows 上的版本 4)?

最佳答案

在非 Windows 机器上,.NET Core 将使用 uuid_create在 BSD 上(即“版本 1”)或 libuuid 的 uuid_generate_random在 macOS 和 linux(“版本 4”)上运行。

替换 CoCreateGuid 函数的实现可以在 CoreCLR's source code on GitHub 中找到.

关于c# - Guid.NewGuid(); .NET Core 的幕后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44924804/

相关文章:

memory-management - InplaceStringBuilder 和 StringBuilder 有什么区别?

entity-framework - EntityFramework 正在缓存旧的过时数据,我不知道如何阻止它

java - 如何在 Java 1.4 中创建 UUID 或 GUID

java - 通过PHP脚本获取minecraft uuid,无需API

c# - ASP.NET MVC C# 动态单选按钮获取表单集合

c# - IISExpress 找不到使用 Visual Studio 2013 运行本地主机的 ssl 页面

c# - 如何支持 dotnet core CreateDirectory 中的特殊字符到 NFS 文件共享

objective-c - 使用 String 创建一个 128 位的 UUID

c# - 在选定的行 wpf mvvm 上隐藏数据网格中的特定上下文菜单

c# - Entity Framework 的导航属性为空