本文介绍了Guid.NewGuid();.NET Core 的幕后花絮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

昨天研究这个主题,发现了几个有趣的问题(比如这个) 最终生成 GUID 的方式.简单来说;似乎 Guid.NewGuid(); 在 COM 中调用 CoCreateGuid,然后在 Windows RPC 中调用 UuidCreate (docs 此处此处.

Researching the subject yesterday, I found several interesting questions (such as this one) on how GUIDs are ultimately generated. In brief; it seems that Guid.NewGuid(); calls CoCreateGuid in the COM, which in turn calls UuidCreate in the Windows RPC (docs here and here).

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

I found myself wondering; How does this work when the OS is not Windows, such as might be the case with .NET Core, and does this affect the 'version' algorithm used to generate the GUID (which I understand is Version 4 on Windows)?

推荐答案

在非 Windows 机器上,.NET Core 将使用 uuid_create 在 BSD(即版本 1")或 libuuid 的 uuid_generate_random macOS 和 Linux 上的函数(版本 4").

On non-windows machines, .NET Core will use either uuid_create on BSD (which is "version 1") or libuuid's uuid_generate_random function on macOS and linux ("version 4").

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

The implementation for the replacement CoCreateGuid function can be found in CoreCLR's source code on GitHub.

这篇关于Guid.NewGuid();.NET Core 的幕后花絮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 16:28