为什么无参数的Guid构造函数会生成一个空的GUID?

时间:2008-12-30 19:23:42

标签: c# .net guid default-constructor

为什么无参数Guid构造函数生成一个空GUID而不是像Guid.NewGuid()一样默认生成一个GUID?

空Guid有特殊用途吗?

4 个答案:

答案 0 :(得分:33)

  

为什么无参数Guid构造函数生成一个空GUID而不是像Guid.NewGuid()一样默认生成一个GUID?

简短回答:因为语言/运行时没有让Guid类型的设计者定义默认构造函数。

不仅传统的“默认构造”结构的值为零,您根本无法为结构定义默认构造函数。当您说新的Guid()时,运行时会为您提供一个新对象,其中所有字段都初始化为其默认值:http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx

可在此处找到一些基本原理:http://www.yoda.arachsys.com/csharp/faq/#struct.constructors

答案 1 :(得分:3)

此行为与.Net框架中的其他值类型一致。当“新增”值类型时,使用默认值。这恰好是Guid的默认值,类似于Int32的默认值0。

答案 2 :(得分:2)

空guid对于表示缺少Guid非常有用。由于值类型不可为空(默认情况下是,您可以使用可为空)。

例如,我使用Guid作为Id属性很多因为它们真的很容易使用。因此,有一种方法可以查看对象是否已被持久化(即何时获取其ID),我可以针对空guid检查id的值。

答案 3 :(得分:2)

我认为结构或内置类型的默认值为零是常规的。