web-dev-qa-db-ja.com

GUIDからダッシュを削除するのは良い考えですか?

GUIDでダッシュを空の文字列に置き換えるコードがあります。

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

それはGUIDの一意性を削除しますか?

また、誰かがこれを確認することもできますか?

GUIDをchar(32)としてデータベースに保存しています。それは大丈夫ですか?タイムゾーンが異なる海外のユーザーがいるため、文字の長さが32を超える可能性があるのではないかと心配しています。ありがとうございます。

27
Salman

いいえ、Guidの一意性は保証されています。
ダッシュは読みやすさのためだけです:内部的にGUIDは16バイトで構成されています。
詳細については、 Microsoft および Wikipedia を参照してください。
コンストラクターも見てください:

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);
26
Marco

ダッシュは常に同じ場所にあるため、いいえ、一意性が低下することはありません。

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

このように、ダッシュなしでGUIDを生成します ドキュメント

57
tonycoupland

ダッシュはGUID自体の一部ではありません。それらは、ギッドの一般的な表現の一部にすぎません。したがって、削除してもGUID値自体は変更されません。

5
Jan