昨天研究这个主题,我发现了几个关于 GUID 最终如何生成的有趣问题(例如 this one)。简单来说;似乎 Guid.NewGuid();
在 COM 中调用 CoCreateGuid
,它又在 Windows RPC 中调用 UuidCreate
(文档 here和 here )。
我发现自己在想;当操作系统不是 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/