Guid.NewGuid(); .NET Core中的幕后故事

Par*_*ird 6 c# uuid guid .net-core

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

我发现自己在想; 当操作系统不是 Windows时,如果可能是.NET Core的情况,这是如何工作的,这是否会影响用于生成GUID 的"版本"算法(我理解为Windows上的版本4)?

Mar*_*ich 12

在非Windows机器上,.NET Core将使用uuid_createBSD("版本1")或者uuid_generate_randommacOS和linux("版本4")上的libuuid 函数.

CoCreateGuid可以在GitHub上的CoreCLR源代码中找到替换函数的实现.