我正在测试一些WCF服务,它们可以来回发送带有guid的对象。在我的web应用程序测试代码中,我正在做以下事情:
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = new Guid()
});
由于某些原因,调用new Guid()会生成全为0的Guid,如下所示:
00000000 - the 0000-0000-0000-000000000000
是什么导致了这种情况?
试试这个吧:
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = new Guid.NewGuid()
});
这将生成一个“真实的”Guid值。当您新建引用类型时,它将为您提供默认值(在本例中,Guid为全0)。
当您创建一个新的Guid时,它将把它初始化为全零,这是Guid的默认值。它基本上与创建一个“new”int(这是一个值类型,但你可以这样做)相同:
Guid g1; // g1 is 00000000-0000-0000-0000-000000000000
Guid g2 = new Guid(); // g2 is 00000000-0000-0000-0000-000000000000
Guid g3 = default(Guid); // g3 is 00000000-0000-0000-0000-000000000000
Guid g4 = Guid.NewGuid(); // g4 is not all zeroes
将其与int型做同样的事情进行比较:
int i1; // i1 is 0
int i2 = new int(); // i2 is 0
int i3 = default(int); // i3 is 0
试试这个吧:
var responseObject = proxy.CallService(new RequestObject
{
Data = "misc. data",
Guid = new Guid.NewGuid()
});
这将生成一个“真实的”Guid值。当您新建引用类型时,它将为您提供默认值(在本例中,Guid为全0)。
当您创建一个新的Guid时,它将把它初始化为全零,这是Guid的默认值。它基本上与创建一个“new”int(这是一个值类型,但你可以这样做)相同:
Guid g1; // g1 is 00000000-0000-0000-0000-000000000000
Guid g2 = new Guid(); // g2 is 00000000-0000-0000-0000-000000000000
Guid g3 = default(Guid); // g3 is 00000000-0000-0000-0000-000000000000
Guid g4 = Guid.NewGuid(); // g4 is not all zeroes
将其与int型做同样的事情进行比较:
int i1; // i1 is 0
int i2 = new int(); // i2 is 0
int i3 = default(int); // i3 is 0