Por que o construtor Guid sem parâmetros gera um GUID vazio?
-
03-07-2019 - |
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?
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.