从GUID中删除破折号是个好主意吗?

Sal*_*man 25 c# asp.net guid

我有代码用GUID中的空字符串替换短划线.

Replace(System.Guid.NewGuid.ToString, "-", "")
Run Code Online (Sandbox Code Playgroud)

这会消除guid的独特性吗?

也有人可以证实这一点吗?

我们将GUID作为char(32)存储在数据库中.这样可以吗?因为我们有不同时区的国际用户,所以我们担心字符长度可能会超过32个.谢谢.

ton*_*and 58

破折号总是在同一个地方,所以不,它不会降低唯一性.

System.Guid.NewGuid().ToString("N");
Run Code Online (Sandbox Code Playgroud)

将生成没有破折号的GUID,如本文档中所示


Mar*_*rco 26

不,Guid的独特性得到保证.
破折号仅用于可读性:内部Guid由16个字节组成.
您可以查看MicrosoftWikipedia以获取更多详细信息.
看看构造函数:

public Guid(int a, short b, short c, byte[] d);
public Guid(int a, short b, short c, byte d, 
            byte e, byte f, byte g, byte h, 
            byte i, byte
public Guid(uint a, ushort b, ushort c, byte d, 
            byte e, byte f, byte g, byte h, 
            byte i, byte j, byte k);
Run Code Online (Sandbox Code Playgroud)


Jan*_*Jan 5

破折号不是guid本身的一部分.它们只是guids常见表示的一部分.因此删除不会改变Guid值本身.