Guid的默认值是什么?

166

int 的默认值为0,string 的默认值为"",boolean 的默认值为false。请问有人可以澄清 guid 的默认值是什么吗?


58
默认的 Guid{00000000-0000-0000-0000-000000000000}。这基本上是二进制零。 - Szer
相关问题:如何在C#中将参数默认为Guid.Empty? - Michael Freidgeim
3
这个网站可以提供空的 GUID(全局唯一标识符):http://00000000-0000-0000-0000-000000000000.com/。 - Matthew
2
顺便提一下:字符串的默认值是null,而不是""(分号)。 - Johan Wintgens
5个回答

203

您可以使用这些方法获取空 GUID。结果将是一个所有位数都为0的GUID - "00000000-0000-0000-0000-000000000000"。

new Guid()

default(Guid)

Guid.Empty

正如Use Keim在评论中指出的那样,defaultdefault(Guid)的缩写。


4
在较新的C#版本中,default(Guid)default是相同的。 - Uwe Keim
1
Guid.Empty 不能用作编译时常量。因此,您不能将其用作默认参数。 - JSWilson

54

您可以使用Guid.Empty。它是一个具有值00000000-0000-0000-0000-000000000000的Guid结构的只读实例

您也可以使用这些替代方案。

var g = new Guid();
var g = default(Guid);

谨防使用Guid.NewGuid(),因为它会生成一个新的Guid。

使用上述选项之一,并与您和您的团队认为更易读的选项保持一致。不要在代码中混用不同的选项。我认为Guid.Empty是最好的选择,因为new Guid()可能会让我们以为它正在生成一个新的guid,有些人可能不知道default(Guid)的值是什么。


31

GUID 的默认值为空(例如:00000000-0000-0000-0000-000000000000)。

可以使用 Guid.Emptynew Guid() 来调用。

如果您想要一个新的 GUID,请使用 Guid.NewGuid()


9
我注意到你从未接受过任何问题的答案。在StackExchange的常见问题解答页面中,你可以了解如何接受答案以及为什么应该这样做。请参考以下链接:http://meta.stackexchange.com/q/5234。 - Genhis
3
我认为他得到了他需要的东西,然后就像消失在地球表面一样,哈哈。 - David Watts

12

补充以上答案,你不能在方法、索引器或委托定义中使用Guid默认值Guid.Empty作为可选参数,因为这会导致编译时错误。请使用default(Guid)new Guid()代替。


0
你可以使用一个类来创建一个空的Guid新的Guid
Guid的默认值是00000000-0000-0000-0000-000000000000
public class clsGuid  // This is a class name
{
    public Guid MyGuid { get; set; }
}

static void Main(string[] args)
{
    clsGuid cs = new clsGuid();   
    Console.WriteLine(cs.MyGuid); // This will give empty Guid "00000000-0000-0000-0000-000000000000"

    cs.MyGuid = new Guid();
    Console.WriteLine(cs.MyGuid); // This will also give empty Guid "00000000-0000-0000-0000-000000000000"

    cs.MyGuid = Guid.NewGuid();
    Console.WriteLine(cs.MyGuid); // This way, it will give a new Guid (eg. "d94828f8-7fa0-4dd0-bf91-49d81d5646af")

    Console.ReadKey(); // This line holds the output screen in a console application
}

是的,你可以将类值设为静态值,或在类中使用它。 - THE LIFE-TIME LEARNER
1
我知道我们可以像使用C#中的任何其他类型一样使用Guid。我的问题是,你的答案是否包含任何之前没有出现过的新信息。看起来你发布的所有信息都已经被多个其他人在多年前发布过了。 - nvoigt
是的,你说得对。我想表达的是,你可以使用一个类来生成空 GUID 和新 GUID。这种类型的答案在这个问题中并不存在。 - THE LIFE-TIME LEARNER
1
格式可以改进,特别是注释应该以//开头。否则,这是一个很好的答案,因为它具体显示了在自定义类中的使用。 - The Thirsty Ape

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接