Pregunta

¿Por qué el constructor Guid sin parámetros genera un GUID vacío en lugar de un valor predeterminado a uno generado como con Guid.NewGuid ()?

¿Hay un uso particular para un Guid vacío?

¿Fue útil?

Solución

  

¿Por qué el constructor Guid sin parámetros genera un GUID vacío en lugar de un valor predeterminado a uno generado como con Guid.NewGuid ()?

Respuesta corta: porque el idioma / 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 un " construido por defecto " La estructura es cero, simplemente no puede definir un constructor predeterminado para una estructura. Cuando dice nuevo Guid (), el tiempo de ejecución le ofrece un nuevo objeto donde todos los campos se inicializan con sus valores predeterminados: http://msdn.microsoft.com/en-us/library/ah19swz4%28VS.71%29.aspx

Puede encontrar alguna explicación aquí: http: //www.yoda. arachsys.com/csharp/faq/#struct.constructors

Otros consejos

Este comportamiento es consistente con el resto de los tipos de valor en el marco .Net. Cuando " nuevo " un tipo de valor, se utiliza un valor predeterminado. Resulta que este es 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 valor no son anulables (de manera predeterminada, sí, puede usar anulables).

Por ejemplo, uso mucho las propiedades de Guid como Id porque son muy fáciles de utilizar. Entonces, una forma de ver si un objeto ha persistido (que es cuando obtiene su Id), puedo verificar el valor de id contra un guid vacío.

Creo que es convencional que el valor predeterminado, de una estructura o de un tipo integrado, sea cero.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top