CA2207: inicializar campos estáticos de tipo de valor embutido
TypeName |
InitializeValueTypeStaticFieldsInline |
CheckId |
CA2207 |
Categoria |
Microsoft.Usage |
Alteração Significativa |
Sem Quebra |
Causa
Um tipo de valor declara um construtor estático explícito.
Descrição da Regra
Quando um tipo de valor é declarado, sofrerá uma inicialização padrão em que todos os campos de tipo de valor são definidos como zero e todos os campos de referência- tipo são definidos a null (Nothing no Visual Basic).Um construtor estático explícito é garantido apenas para executar antes que um construtor da instância do ou membro de tipo estático de ser chamado.Em virtude disso, se o tipo for criado sem chamar um construtor da instância do, o construtor estática não é garantido para executar.
Se todos os dados estáticos forem embutidos inicializado e nenhum construtor estático explícito é declarado, os compiladores C# e Visual Basic adicionam o sinalizador de beforefieldinit à definição de classe de MSIL.Os compiladores também adicionam um construtor estático particular que contém o código de inicialização estático.Este construtor estático privado é garantido para executar antes que todos os campos estáticos do tipo são acessadas.
Como Corrigir Violações
Para corrigir uma violação desta regra inicializar todos os dados estáticos quando é declarada e remover o construtor estático.
Quando Suprimir Alertas
Não elimine um alerta desta regra.
Regras Relacionadas
CA1810: inicializar campos estáticos de tipo de referência embutido