NewGuid vs System.Guid.NewGuid (). ToString (“D”);

¿Hay alguna diferencia cuando genera un GUID usando NewGuid(); vs System.Guid.NewGuid().ToString("D"); o son lo mismo?

Guid.NewGuid().ToString() es una representación de cadena de GUID, es decir, devuelve el objeto de string , mientras que Guid.NewGuid() devuelve el tipo de datos Guid .

Me doy cuenta de que esta pregunta ya tiene una respuesta aceptada, pero pensé que sería útil compartir información sobre el formato de las guías.

El método ToString () (sin parámetros) formatea un guid usando este formato:

 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 

El método ToString (formato de cadena) formatea un guid de una de varias maneras:

 "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}} 

Al llamar a Guid.ToString("D") obtiene el mismo resultado que al llamar a Guid.ToString() .

Como se mencionó en las otras respuestas, la guía en sí no tiene formato. Es sólo un valor. Tenga en cuenta que puede crear guías utilizando NewGuid o el constructor de la guía. Al utilizar NewGuid, no tiene control sobre el valor del guid. Usando el constructor de guid, puedes controlar el valor. El uso del constructor es útil si ya tiene una representación de cadena de un guid (tal vez lo lea de una base de datos) o si desea facilitar la interpretación de un guid durante el desarrollo. También puede usar los métodos Parse , ParseExact , TryParse y TryParseExact .

Entonces, puedes crear guids como este:

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

Usando System.Guid.NewGuid() obtendrá un objeto de tipo Guid

Utilizando System.Guid.NewGuid().ToString("D"); obtendrás la representación de cadena del objeto Guid

Además, como sé, no hay diferencia entre .ToString("D") y .ToString()

El algoritmo de generación debe ser el mismo para ambos, porque System.Guid.NewGuid().ToString("D") está llamando a System.Guid.NewGuid() , y luego llama a ToString en el resultado, es decir, ambos ejemplos. Estamos llamando al mismo método para generar el guid. En cuanto a la comparación del “formato”, esto no tiene sentido porque System.Guid.NewGuid() no tiene un “formato” de la misma forma que System.Guid.NewGuid().ToString("D") : es solo llamando al método ToString que le da a la representación interna de guid un formato de cadena externo. El formato que toma la cadena dependerá del argumento que pase al método de la cadena.