web-dev-qa-db-ja.com

NewGuid vs System.Guid.NewGuid()。ToString( "D");

NewGuid(); vs System.Guid.NewGuid().ToString("D");を使用してGUID=)を生成する場合、またはそれらは同じものですか?

27
001

Guid.NewGuid().ToString()はGUIDの文字列表現です。つまり、stringオブジェクトを返し、Guid.NewGuid()Guidデータ型を返します。

20

この質問にはすでに受け入れられた答えがあることはわかっていますが、GUIDのフォーマットに関する情報を共有することは有益だと思いました。

ToString()(パラメータなし)メソッド は、次の形式を使用してGUIDをフォーマットします。

_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
_

ToString(string format)method は、いくつかの方法のいずれかでGUIDをフォーマットします。

_"N" - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (32 digits)
"D" - xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (32 digits separated by hyphens)
"B" - {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} (same as "D" with addition of braces)
"P" - (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) (same as "D" with addition of parentheses)
"X" - {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
_

Guid.ToString("D")を呼び出すと、Guid.ToString()を呼び出すのと同じ結果が得られます。

他の回答で述べたように、guid自体には形式がありません。これは単なる値です。 NewGuidまたはguidのコンストラクターを使用して、guidを作成できることに注意してください。 NewGuidを使用すると、guidの値を制御できません。 guidのコンストラクターを使用して、値を制御できます。コンストラクターの使用は、GUIDの文字列表現を既に持っている場合(データベースから読み取る可能性がある場合)、または開発中にGUIDを解釈しやすくする場合に便利です。 ParseParseExactTryParse 、および TryParseExact メソッドも使用できます。

したがって、次のようなGUIDを作成できます。

_Guid g1 = Guid.NewGuid(); //Get a Guid without any control over the contents
Guid g2 = new Guid(new string('A',32)); //Get a Guid where all digits == 'A'
Guid g3 = Guid.Parse(g1.ToString());
Guid g4 = Guid.ParseExact(g1.ToString("D"),"D");
Guid g5;
bool b1 = Guid.TryParse(g1.ToString(), out g5);
Guid g6;
bool b2 = Guid.TryParseExact(g1.ToString("D"),"D", out g6);
_
137
wageoghe

System.Guid.NewGuid().ToString("D")System.Guid.NewGuid()を呼び出してから、結果に対してToStringを呼び出すため、生成アルゴリズムは両方で同じである必要があります。つまり、両方の例はGUIDを生成するのと同じ方法。 「フォーマット」の比較について-System.Guid.NewGuid()にはSystem.Guid.NewGuid().ToString("D")と同じように「フォーマット」がないため、これは意味がありません-ToString guidの内部表現に外部の文字列形式を与えるメソッド。文字列の形式は、文字列メソッドに渡す引数によって異なります。

4
Polyfun

System.Guid.NewGuid()を使用すると、Guid型のオブジェクトを取得できます

System.Guid.NewGuid().ToString("D");を使用すると、Guidオブジェクトの文字列表現を取得できます

また、私は.ToString("D").ToString()の間に違いがないことを知っています

4
Samich