Pergunta

Por que o construtor Guid sem parâmetros gera um GUID vazio em vez de usar como padrão um gerado como com Guid.NewGuid()?

Existe um uso específico para um Guid vazio?

Foi útil?

Solução

Por que o construtor GUID sem parâmetros gera um GUID vazio em vez de padrão para um gerado como com guid.newguid ()?

Resposta curta: Como o idioma/tempo de execução não deixou o designer do tipo GUID definir um construtor padrão.

Não é apenas convencional que o valor de uma estrutura "construído de padrão" seja zero, você simplesmente não pode definir um construtor padrão para uma estrutura. Quando você diz novo Guid (), o tempo de execução oferece um novo objeto em que todos os campos são inicializados com seus valores padrão: http://msdn.microsoft.com/en-us/library/ah19swz4%28vs.71%29.aspx

Alguma lógica pode ser encontrada aqui: http://www.yoda.arachsys.com/csharp/faq/#struct.constructors

Outras dicas

Esse comportamento é consistente com o restante dos tipos de valor na estrutura .NET. Quando "Newing Up" um tipo de valor, um valor padrão é usado. Por acaso, isso é o padrão para GUID semelhante ao valor padrão do INT32 de 0.

Um guia vazio é útil para representar a falta de um guia.Como os tipos de valor não são anuláveis ​​(por padrão, sim, você pode usar anulável).

Por exemplo, eu uso muito um Guid como propriedades de ID porque são muito fáceis de trabalhar.Portanto, uma maneira de ver se um objeto foi persistido (que é quando ele obtém seu ID), posso verificar o valor de id em um guid vazio.

Eu acho convencional que o valor padrão, de uma estrutura ou de um tipo embutido, seja zero.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top