如何在C#中生成UUID

Uma*_*ani 121 .net c# com uuid visual-studio-2008

我正在以编程方式创建.idl文件.如何以编程方式为接口和方法创建UUID.

我可以通过编程方式生成UUID吗?

Tud*_*dor 184

你可能正在寻找System.Guid.NewGuid().

  • 你也可以做String UUID = Guid.NewGuid().ToString() (30认同)
  • @Uma Shankar Subramani:GUID =全球唯一标识符,UUID =通用唯一标识符.不同的词为同一个概念. (17认同)
  • GUID和UUID都一样吗? (9认同)
  • 你可能想要`System.Guid.NewGuid().ToString("B").ToUpper()`如果你想与一些无法理解小写UUID的MS Build工具兼容.例如,`vdproj`安装项目的UUID大写为大写,并且会抛出一个异常,你给它小写. (6认同)
  • 这不是同一件事。这是相同的表示,但不是相同的方案。Guid 可以是数字和数字的随机表示,而 UUID 包含数据/时间和 MAC 地址等信息。https://en.wikipedia.org/wiki/Universally_unique_identifier (6认同)

Ben*_*her 41

注意:虽然.NET Guid和(RFC4122)UUID的字符串表示相同,但存储格式不相同..NET在前三个Guid部分以小端字节进行交易.

如果要传输字节(例如,作为base64),则不能只使用Guid.ToByteArray()和编码它.你需要Array.Reverse前三个部分(Data1-3).

我是这样做的:

var rfc4122bytes = Convert.FromBase64String("aguidthatIgotonthewire==");
Array.Reverse(rfc4122bytes,0,4);
Array.Reverse(rfc4122bytes,4,2);
Array.Reverse(rfc4122bytes,6,2);
var guid = new Guid(rfc4122bytes);
Run Code Online (Sandbox Code Playgroud)

有关特定.NET实现的详细信息,请参阅此答案.

编辑:感谢Code Ranger的Jeff Walker指出内部与进出字节数组构造函数的字节数组的格式无关ToByteArray().