C# 为什么无参数Guid构造函数生成空Guid?

C# 为什么无参数Guid构造函数生成空Guid?,c#,.net,guid,default-constructor,C#,.net,Guid,Default Constructor,为什么无参数Guid构造函数生成空Guid,而不是像Guid.NewGuid()那样默认为生成的Guid 空Guid是否有特殊用途?空Guid可用于表示缺少Guid。由于值类型不可为Null(默认情况下,可以使用nullable) 例如,我经常使用Guid作为Id属性,因为它们很容易使用。因此,要查看对象是否已被持久化(即当它获取Id时),我可以根据空guid检查Id的值 我认为结构或内置类型的默认值通常为零 为什么无参数Guid构造函数生成空Guid,而不是像Guid.NewGuid()那样默

为什么无参数Guid构造函数生成空Guid,而不是像Guid.NewGuid()那样默认为生成的Guid


空Guid是否有特殊用途?

空Guid可用于表示缺少Guid。由于值类型不可为Null(默认情况下,可以使用nullable)


例如,我经常使用Guid作为Id属性,因为它们很容易使用。因此,要查看对象是否已被持久化(即当它获取Id时),我可以根据空guid检查Id的值

我认为结构或内置类型的默认值通常为零

为什么无参数Guid构造函数生成空Guid,而不是像Guid.NewGuid()那样默认为生成的Guid

简短回答:因为语言/运行时不允许Guid类型的设计器定义默认构造函数

“default constructed”结构的值为零,这不仅是传统的做法,而且您无法为结构定义默认构造函数。当您说new Guid()时,运行时将为您提供一个新对象,其中所有字段都将初始化为其默认值:


这里可以找到一些基本原理:

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

He-He,猜猜谁是www.yoda.arachsys.com C#FAQ的作者?小提示:它以“J”开头,以“飞碟”结尾。我并不惊讶,乔恩真的什么都知道;-)。