C# NewGuid vs System.Guid.NewGuid().ToString(";D";);

C# NewGuid vs System.Guid.NewGuid().ToString(";D";);,c#,.net,guid,C#,.net,Guid,使用NewGuid()生成GUID时是否存在差异vsSystem.Guid.NewGuid().ToString(“D”)或者它们是相同的东西?Guid.NewGuid().ToString()是Guid的字符串表示形式,即返回string对象,而Guid.NewGuid()返回Guid数据类型。使用System.Guid.NewGuid()您将获得Guid类型的对象 使用System.Guid.NewGuid().ToString(“D”)您将获得Guid对象的字符串表示形式 另外,正如我所知

使用
NewGuid()生成GUID时是否存在差异
vs
System.Guid.NewGuid().ToString(“D”)
或者它们是相同的东西?

Guid.NewGuid().ToString()
是Guid的字符串表示形式,即返回
string
对象,而
Guid.NewGuid()
返回
Guid
数据类型。

使用
System.Guid.NewGuid()
您将获得
Guid
类型的对象


使用
System.Guid.NewGuid().ToString(“D”)
您将获得
Guid
对象的字符串表示形式


另外,正如我所知,
.ToString(“D”)
.ToString()
两者的生成算法必须相同,因为
System.Guid.NewGuid().ToString(“D”)
正在调用
System.Guid.NewGuid()
,然后对结果调用
ToString
,即。,两个示例都调用相同的方法来生成guid。至于比较“格式”-这没有意义,因为
System.Guid.NewGuid()
没有与
System.Guid.NewGuid().ToString(“D”)
相同的“格式”-只有通过调用
ToString
方法,才能为Guid的内部表示形式提供外部字符串格式。字符串采用的格式取决于传递给string方法的参数。

我知道这个问题已经有了公认的答案,但我认为分享一些关于格式化GUID的信息会很有用

将使用以下格式设置guid的格式:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
guid的格式有以下几种:

"N" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (32 digits)
"D" - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (32 digits separated by hyphens)
"B" - {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (same as "D" with addition of braces)
"P" - (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) (same as "D" with addition of parentheses)
"X" - {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
调用
Guid.ToString(“D”)
会产生与调用
Guid.ToString()
相同的结果

如其他答案中所述,guid本身没有格式。它只是一种价值。注意,您可以使用NewGuid或guid的构造函数创建guid。使用NewGuid,您无法控制guid的值。使用guid的构造函数,可以控制该值。如果已经有guid的字符串表示形式(可能从数据库中读取),或者希望在开发过程中更容易解释guid,则使用构造函数非常有用。也可以使用、和方法

因此,您可以创建如下GUI:

Guid g1 = Guid.NewGuid(); //Get a Guid without any control over the contents
Guid g2 = new Guid(new string('A',32)); //Get a Guid where all digits == 'A'
Guid g3 = Guid.Parse(g1.ToString());
Guid g4 = Guid.ParseExact(g1.ToString("D"),"D");
Guid g5;
bool b1 = Guid.TryParse(g1.ToString(), out g5);
Guid g6;
bool b2 = Guid.TryParseExact(g1.ToString("D"),"D", out g6);

除了一个是字符串,另一个是guid,Id的格式和生成是否相同?@001,
guid guid=guid.NewGuid()将生成
Guid
对象。调用
string s=guid.ToString()
将创建生成的GUID的字符串表示形式。非常感谢您在格式化您的答案方面所做的努力:)这是我所见过的GUID格式的最简洁的解释。干得好,谢谢你!