环境:
- window 10
- vs2022
- .net core 3.1
//共5中格式: NDBPX 默认:D
var guid = Guid.Parse("a66cc049-edee-426d-9aa2-dea498149b8d");
Console.WriteLine(guid.ToString("N"));//a66cc049edee426d9aa2dea498149b8d
Console.WriteLine(guid.ToString("D"));//a66cc049-edee-426d-9aa2-dea498149b8d
Console.WriteLine(guid.ToString("B"));//{a66cc049-edee-426d-9aa2-dea498149b8d}
Console.WriteLine(guid.ToString("P"));//(a66cc049-edee-426d-9aa2-dea498149b8d)
Console.WriteLine(guid.ToString("X"));//{0xa66cc049,0xedee,0x426d,{0x9a,0xa2,0xde,0xa4,0x98,0x14,0x9b,0x8d}}
var guidN = Guid.Parse("a66cc049edee426d9aa2dea498149b8d");
var guidD = Guid.Parse("a66cc049-edee-426d-9aa2-dea498149b8d");
var guidB = Guid.Parse("{a66cc049-edee-426d-9aa2-dea498149b8d}");
var guidP = Guid.Parse("(a66cc049-edee-426d-9aa2-dea498149b8d)");
var guidX = Guid.Parse("{0xa66cc049,0xedee,0x426d,{0x9a,0xa2,0xde,0xa4,0x98,0x14,0x9b,0x8d}}");
Console.WriteLine(guid == guidN);//true
Console.WriteLine(guid == guidD);//true
Console.WriteLine(guid == guidB);//true
Console.WriteLine(guid == guidP);//true
Console.WriteLine(guid == guidX);//true
//使用ParseExact时,当知道guid格式时可以指定 "NDBPX"中的一个,如果不知道就不要指定,指定的与实际的不符会报错
Guid.ParseExact("a66cc049edee426d9aa2dea498149b8d", "N");//正常
Guid.ParseExact("a66cc049edee426d9aa2dea498149b8d", "P");//报错
另外: guid不区分大小写
为什么不区分大小写,因为:guid是一种由算法生成的二进制长度为128位的数字标识符。
上面列举的几种形式只是guid转换到string的不同表现,但Guid本身是二进制,所以没有大小写的说法。
测试代码如下:
Guid g1 = new Guid("6d025d37-a957-44b1-9e25-50d6bfd57a39");
Guid g2 = new Guid("6D025D37-A957-44B1-9E25-50D6BFD57A39");
Console.WriteLine(g1.Equals(g2));//true
Console.WriteLine(Guid.ReferenceEquals(g1, g2));//false



