CA2207: Inicializar o tipo de valor campos estáticos in-line
TypeName |
InitializeValueTypeStaticFieldsInline |
CheckId |
CA2207 |
<strong>Categoria</strong> |
Microsoft.Usage |
Alteração significativa |
Não separável |
Causa
Um tipo de valor declara um construtor estático explícito.
Descrição da regra
Quando um tipo de valor é declarado, passa por uma inicialização padrão onde todos os campos do tipo de valor são definidos como zero e todos os campos do tipo de referência são definidos como null (Nothing em Visual Basic). Um construtor estático explícito só é garantido para ser executado antes de um construtor de instância ou um membro estático do tipo é chamado. Portanto, se o tipo for criado sem chamar um construtor de instância, o construtor estático não é garantido para ser executado.
Se todos os dados estáticos é inicializado in-line e nenhum construtor estático explícita é declarado, os compiladores de C# e Visual Basic adicionam o beforefieldinit Sinalizador para definição de classe MSIL. Os compiladores também adicionar um construtor estático privado que contém o código de inicialização estática. Este construtor estático privado é garantido para ser executado antes de qualquer campo estático do tipo é acessado.
Como corrigir violações
Para corrigir uma violação desta regra inicializar todos os dados estáticos, quando ele é declarado e remover o construtor estático.
Quando suprimir avisos
Não suprimir um aviso da regra.
Regras relacionadas
CA1810: Inicializar embutido de campos estáticos do tipo de referência