C# 如何防止Guid.NewGuid()在同一实例中生成第二个Guid?

C# 如何防止Guid.NewGuid()在同一实例中生成第二个Guid?,c#,C#,我发现自己正在写C#代码,我已经走出了自己的舒适区。不过很高兴学习。 以下是我正在处理的问题: 我有一个变量,在声明Guid.NewGuid()时实例化它,如下所示: var myNewId = Guid.NewGuid(); // {00000000-0000-0000-0000-000000000000} var myOtherId = myNewId.ToString() + "_abc"; // expected: 00000000-0000-0000-0000-00000000000

我发现自己正在写C#代码,我已经走出了自己的舒适区。不过很高兴学习。 以下是我正在处理的问题:

我有一个变量,在声明Guid.NewGuid()时实例化它,如下所示:

var myNewId = Guid.NewGuid(); // {00000000-0000-0000-0000-000000000000}
var myOtherId = myNewId.ToString() + "_abc"; // expected: 00000000-0000-0000-0000-000000000000_abc
var myOtherId = myNewId.ToString() + "_abc"; // actual: xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx_abc
我有第二个变量,它接收第一个变量的值并向其附加一个通用字符串,如下所示:

var myNewId = Guid.NewGuid(); // {00000000-0000-0000-0000-000000000000}
var myOtherId = myNewId.ToString() + "_abc"; // expected: 00000000-0000-0000-0000-000000000000_abc
var myOtherId = myNewId.ToString() + "_abc"; // actual: xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx_abc
我的问题是,当第二个变量引用第一个变量时,第一个变量似乎再次被实例化,我最终得到了一个新的Guid

如有任何反馈,将不胜感激


谢谢

您需要使用
Guid.Empty

var myNewId = Guid.Empty;
Guid.NewGuid()
初始化Guid的新实例,而不是空Guid


Guid.NewGuid()是一个方法,在运行它时,它实际上会给出一个唯一的ID,而不是一个供您填充的空白ID。
Guid.NewGuid()
创建一个Guid实例,其值永远不会
{00000000-0000-0000-0000-000000000000000000}
。全零是默认的Guid值,由
Guid返回。空的
default(Guid)
。发布真实的代码、您期望的内容和您得到的内容。当您发布的代码无法编译时,您所声明的内容无法复制-您不能在同一范围内声明两个同名变量。@PanagiotisKanavos这两行是为了查看它们后面的注释。@LarsTech这很明显。很明显,这个声明是错误的-
ToString()
没有初始化guid。我们都在试图猜测OP的意思,或者想出一个即使问题是错的也有意义的方案。也许有一个函数调用
Guid.NewGuid(),然后返回
myNewId.ToString()
的结果。也许OP认为每次调用都会返回相同的值?或者
NewGuid()`是默认构造函数?