Compartilhar via


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