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

问题描述 投票:26回答:3

我有在GUID中用空字符串替换破折号的代码。

Replace(System.Guid.NewGuid.ToString, "-", "")

会消除GUID的唯一性吗?

有人也可以确认吗?

我们将GUID存储为char(32)。这样可以吗?由于我们在不同时区有国际用户,因此我们担心字符长度可能会超过32。谢谢。

c# asp.net guid
3个回答
27
投票

是的,可以删除破折号。 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);

59
投票

破折号始终在同一位置,所以不,它不会减少唯一性。

System.Guid.NewGuid().ToString("N");

将生成没有破折号的GUID,如此documentation


5
投票

破折号不是GUID本身的一部分。它们只是公会的常见表示形式的一部分。因此,删除操作不会更改Guid值本身。

© www.soinside.com 2019 - 2024. All rights reserved.