Guid.NewGuid()与新的Guid()

Guid.NewGuid()new Guid()什么区别?

哪一个是首选?


new Guid()使得一个“空”全0的guid(00000000-0000-0000-0000-000000000000不是很有用)。

Guid.NewGuid()用一个独特的价值做出了一个实际的指导,你可能想要的。


Guid.NewGuid()使用一种算法来创建一个新的UUID,该算法旨在使碰撞非常非常不可能。

new Guid()创建一个全零的UUID。

一般来说,你会喜欢前者,因为这是UUID的要点(除非你从其他地方接收它)。

在某些情况下,您确实需要一个全零的UUID,但在这种情况下, Guid.Emptydefault(Guid)会更清楚您的意图,并且有人阅读它的可能性较小,期望创建一个独特的值。

总而言之,由于缺乏清晰性, new Guid()并没有那么有用,但不可能拥有一个没有无参数构造函数的值类型,它返回一个全零和零值。

编辑:事实上,可能有一个无参数的构造函数的值类型不会将所有内容都设置为零和空值,但是您不能在C#中执行此操作,并且会调用何时调用以及何时会调用它的规则只是一个全零结构造成的混乱,所以它不是一个好主意。


[我明白这是一个旧线索,只是增加更多细节] Mark和Jon Hanna的两个答案总结了不同之处,尽管它可能会让人感兴趣

Guid.NewGuid()

最终调用CoCreateGuid(COM调用Ole32)(参考这里),实际工作由UuidCreate完成。

Guid.Empty旨在用于检查Guid是否包含全零。 这也可以通过比较Guid的价值与新的Guid()

所以,如果你需要一个唯一的标识符 ,答案是Guid.NewGuid()

链接地址: http://www.djcxy.com/p/22105.html

上一篇: Guid.NewGuid() vs. new Guid()

下一篇: C# how to create a Guid value?