[C#] Guidで簡単に生成するランダムな一意識別子(グローバル一意識別子)

[C#] Guidで簡単に生成するランダムな一意識別子(グローバル一意識別子)

Guidとは

Guid は、グローバルに一意となる識別子のことです。Guidは値がめったに重複しないため様々な識別子として利用できます。

保証はされませんが、C#ではGuid構造体を使うことで世界中で一意の識別子を128bit(16byte)の値で生成できます。ほかのアプリや端末などの値と比較しても一致する確率が低いとされています。

Guid.NewGuid() で Guidを生成する

Guidの生成には、Guid.NewGuid() メソッドを使用します。

値は ToString メソッドで文字列に変換できます。

お手軽なランダム値としても使えると思います。

// 新しいGUIDを生成する
var guid = Guid.NewGuid();

// ハイフン区切りで出力される
// 例: e0d1a893-3862-4cf8-bcdf-61ec5f314d66
Console.WriteLine(guid.ToString());

Guid のフォーマットを指定して文字列にする

Guid構造体は ToString メソッドで文字列に変換できますが、その際にフォーマットを指定することで以下のような形式に変換できます。

フォーマット 戻り値の形式
N 32桁の数値
00000000000000000000000000000000
D ハイフン区切り(フォーマット未指定の場合も同様))
00000000-0000-0000-0000-000000000000
B 括弧でくくられたハイフン区切り
{00000000-0000-0000-0000-000000000000}
P 括弧でくくられたハイフン区切り
(00000000-0000-0000-0000-000000000000)
X サブセットごとに区切られた16進数値
{0x00000000,0x0000,0x0000、{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
var guid = Guid.NewGuid();

// 6c26ae43-d6de-4742-8382-ad74c37e5f0a
Console.WriteLine(guid.ToString());

// 6c26ae43d6de47428382ad74c37e5f0a
Console.WriteLine(guid.ToString("N"));

// 6c26ae43-d6de-4742-8382-ad74c37e5f0a
Console.WriteLine(guid.ToString("D"));

// {6c26ae43-d6de-4742-8382-ad74c37e5f0a}
Console.WriteLine(guid.ToString("B"));

// (6c26ae43-d6de-4742-8382-ad74c37e5f0a)
Console.WriteLine(guid.ToString("P"));

// {0x6c26ae43,0xd6de,0x4742,{0x83,0x82,0xad,0x74,0xc3,0x7e,0x5f,0x0a}}
Console.WriteLine(guid.ToString("X"));

UUID

Guid自体はUUIDの一種です。

Wikipediaによると

マイクロソフトによるGUIDはUUIDの実装の1つと見なせる。

とのことです。

以上。

C#カテゴリの最新記事