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

空Guid有特殊用途吗?

有帮助吗?

解决方案

  

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

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

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

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

其他提示

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top