Inicializar valor tipo campos estático embutido
TypeName |
InitializeValueTypeStaticFieldsInline |
CheckId |
CA2207 |
Category (Categoria) |
Microsoft.uso |
Quebrando alterar |
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 de tipo de valor são definidos como zero e todos os campos de tipo de referência são definidos como null (Nothing no Visual Basic). Um construtor estático explícito só é garantido executar antes de um construtor de instância ou 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 certamente executar.
Se todos os dados estáticos é inicializado in-line e nenhum construtor estático explícita é declarado, os compiladores translation from VPE for Csharp e Visual Basic adicionar o beforefieldinit sinalizar para a definição da classe MSIL. Os compiladores também adicionar um particular construtor estático que contém o código de inicialização estática.Esse construtor privado estático é garantido para ser executado antes de quaisquer campos do tipo estáticos são acessados.
Como corrigir violações
Para corrigir uma violação dessa regra inicializar todos os dados estáticos quando ele é declarado e remova o construtor estático.
Quando suprimir avisos
Não suprimir um aviso da regra.