Mar*_*lug 546
new Guid()
使一个"空"全0-guid(00000000-0000-0000-0000-000000000000不是很有用).
Guid.NewGuid()
制作一个具有独特价值的实际guid,你可能想要的.
Jon*_*nna 37
Guid.NewGuid()
使用旨在使冲突非常非常不可能的算法创建新的UUID.
new Guid()
创建一个全零的UUID.
一般来说,你更喜欢前者,因为这是UUID的重点(除非你当然是从其他地方接收它).
在某些情况下,您确实需要全零UUID,但在这种情况下Guid.Empty
或default(Guid)
更清楚您的意图,并且有人读取它的可能性较小,期望创建一个唯一值.
总而言之,new Guid()
由于缺乏清晰度而没有那么有用,但是不可能有一个没有无参数构造函数的值类型返回一个全零和空值.
编辑:实际上,有可能在值类型上有一个无参数构造函数,它不会将所有内容设置为零和null,但是你不能在C#中执行它,以及关于何时调用它以及何时将调用它的规则只是创建一个全零结构是令人困惑的,所以无论如何它都不是一个好主意.
Sud*_*hra 16
[我明白这是一个老线程,只是添加更多细节] Mark和Jon Hanna的两个答案总结了差异,尽管它可能会引起一些人的兴趣.
Guid.NewGuid()
Run Code Online (Sandbox Code Playgroud)
最后调用CoCreateGuid(对Ole32的COM调用)(这里引用),实际工作由UuidCreate完成.
Guid.Empty用于检查Guid是否包含全零.这也可以通过将有问题的Guid的值与新的Guid()进行比较来完成
因此,如果您需要唯一标识符,答案是Guid.NewGuid()