首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guid.NewGuid()与new Guid()

Guid.NewGuid()与new Guid()
EN

Stack Overflow用户
提问于 2012-08-14 00:10:11
回答 4查看 206.3K关注 0票数 381

Guid.NewGuid()new Guid()有什么不同

哪一个是首选的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-14 00:11:58

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

Guid.NewGuid()生成一个具有唯一值的实际guid,这可能是您想要的。

票数 638
EN

Stack Overflow用户

发布于 2012-08-14 00:19:12

Guid.NewGuid()使用一种算法创建一个新的UUID,该算法旨在使冲突变得非常非常不可能。

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

通常,您会更喜欢前者,因为这是UUID的意义所在(当然,除非您从其他地方接收到它)。

在某些情况下,您确实需要一个全零的UUID,但在这种情况下,Guid.Emptydefault(Guid)更清楚您的意图,因此阅读它的人预期已创建唯一值的可能性较小。

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

编辑:实际上,可以在值类型上有一个无参数构造函数,它不会将所有内容都设置为0和null,但您不能在C#中这样做,并且何时调用它以及何时创建全零结构的规则令人困惑,因此无论如何这都不是一个好主意。

票数 44
EN

Stack Overflow用户

发布于 2014-04-08 14:00:16

我知道这是一个老帖子,只是添加了更多细节Mark和Jon Hanna的两个答案总结了不同之处,尽管可能会有一些兴趣

代码语言:javascript
复制
Guid.NewGuid()

最终调用CoCreateGuid (对Ole32的COM调用)(引用here),实际工作由UuidCreate完成。

Guid.Empty用于检查Guid是否全为零。这也可以通过将有问题的Guid的值与新的Guid()进行比较来实现

因此,如果您需要唯一标识符,那么答案是Guid.NewGuid()

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11938151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档