net - system guid newguid c#
¿Por qué el constructor Guid sin parámetros genera un GUID vacío? (4)
¿Por qué el constructor Guid sin parámetros genera un GUID vacío en lugar de un valor predeterminado para uno generado como con Guid.NewGuid ()?
Respuesta corta: Porque el lenguaje / tiempo de ejecución no permitió que el diseñador del tipo Guid definiera un constructor predeterminado.
No solo es convencional que el valor de una estructura "construida por defecto" sea cero, simplemente no se puede definir un constructor predeterminado para una estructura. Cuando dice nuevo Guid () el tiempo de ejecución le proporciona un objeto nuevo donde todos los campos se inicializan a sus valores predeterminados: http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx
Algunos fundamentos se pueden encontrar aquí: http://www.yoda.arachsys.com/csharp/faq/#struct.constructors
¿Por qué el constructor Guid sin parámetros genera un GUID vacío en lugar de un valor predeterminado para uno generado como con Guid.NewGuid ()?
¿Hay un uso particular para un Guid vacío?
Creo que es convencional que el valor predeterminado, de una estructura o de un tipo incorporado, sea cero.
Este comportamiento es coherente con el resto de los tipos de valores en el marco .Net. Cuando se "actualiza" un tipo de valor, se usa un valor predeterminado. Esto pasa a ser el valor predeterminado para Guid similar al valor predeterminado de Int32 de 0.
Un guid vacío es útil para representar la falta de un Guid. Dado que los tipos de valores no son anulables (de forma predeterminada sí, puede usar los valores nulos).
Por ejemplo, uso mucho las propiedades Guid as Id porque son muy fáciles de usar. Entonces, una forma de ver si un objeto ha sido persistido (que es cuando obtiene su Id), puedo verificar el valor de id contra un guid vacío.