Guid.NewGuid()和new Guid()有什么不同
哪一个是首选的?
发布于 2012-08-14 00:11:58
new Guid()生成一个“空的”全0 guid (00000000-0000-0000-0000-000000000000不是很有用)。
Guid.NewGuid()生成一个具有唯一值的实际guid,这可能是您想要的。
发布于 2012-08-14 00:19:12
Guid.NewGuid()使用一种算法创建一个新的UUID,该算法旨在使冲突变得非常非常不可能。
new Guid()创建一个全零的UUID。
通常,您会更喜欢前者,因为这是UUID的意义所在(当然,除非您从其他地方接收到它)。
在某些情况下,您确实需要一个全零的UUID,但在这种情况下,Guid.Empty或default(Guid)更清楚您的意图,因此阅读它的人预期已创建唯一值的可能性较小。
总而言之,由于缺乏清晰度,new Guid()没有那么有用,但是不可能有一个值类型没有返回全零和空值的无参数构造函数。
编辑:实际上,可以在值类型上有一个无参数构造函数,它不会将所有内容都设置为0和null,但您不能在C#中这样做,并且何时调用它以及何时创建全零结构的规则令人困惑,因此无论如何这都不是一个好主意。
发布于 2014-04-08 14:00:16
我知道这是一个老帖子,只是添加了更多细节Mark和Jon Hanna的两个答案总结了不同之处,尽管可能会有一些兴趣
Guid.NewGuid()最终调用CoCreateGuid (对Ole32的COM调用)(引用here),实际工作由UuidCreate完成。
Guid.Empty用于检查Guid是否全为零。这也可以通过将有问题的Guid的值与新的Guid()进行比较来实现
因此,如果您需要唯一标识符,那么答案是Guid.NewGuid()
https://stackoverflow.com/questions/11938151
复制相似问题