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

001*_*001 28 .net c# guid

使用NewGuid();vs 生成GUID System.Guid.NewGuid().ToString("D");或者它们是同一个东西时有区别吗?

wag*_*ghe 140

我意识到这个问题已经有了一个公认的答案,但我认为分享一些有关格式化guid的信息会很有用.

所述的ToString()(无参数)方法格式化使用此格式的GUID:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)

的ToString(字符串格式)方法格式化的几种方法之一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}}
Run Code Online (Sandbox Code Playgroud)

调用Guid.ToString("D")产生与调用相同的结果Guid.ToString().

正如其他答案所述,guid本身没有格式.这只是一个价值.注意,您可以使用NewGuid或使用guid的构造函数创建guid.使用NewGuid,您无法控制guid的值.使用guid的构造函数,您可以控制值.如果你已经有一个guid的字符串表示(也许你是从数据库中读取它),或者如果你想在开发过程中更容易解释一个guid,那么使用构造函数很有用.您还可以使用Parse,ParseExact,TryParseTryParseExact方法.

所以,你可以创建像这样的guids:

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);
Run Code Online (Sandbox Code Playgroud)

  • 这是我见过的对 Guid 格式的最简洁的解释。干得好,谢谢! (3认同)

Kir*_*huk 22

Guid.NewGuid().ToString()是GUID的字符串表示,即返回stringobject,同时Guid.NewGuid()返回Guiddatatype.


Sam*_*ich 5

使用System.Guid.NewGuid()你会得到一个Guid类型的对象

使用你将得到对象System.Guid.NewGuid().ToString("D");的字符串表示Guid

据我所知,.ToString("D")和之间没有区别.ToString()