Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Property | valor |
|---|---|
| ID da regra | CA2207 |
| Título | Inicializar campos estáticos do tipo de valor embutidos |
| Categoria | Utilização |
| A correção está quebrando ou não quebrando | Sem quebra |
| Habilitado por padrão no .NET 10 | Não |
Motivo
Um value-type declara um construtor estático explícito.
Descrição da regra
Quando um tipo de valor é declarado, ele 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ó tem garantia de ser executado antes que um construtor de instância ou membro estático do tipo seja chamado. Portanto, se o tipo é criado sem chamar um construtor de instância, o construtor estático não tem garantia de execução.
Se todos os dados estáticos forem inicializados em linha e nenhum construtor estático explícito for declarado, os compiladores C# e Visual Basic adicionarão o sinalizador beforefieldinit à definição de classe CIL. Os compiladores também adicionam 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 quaisquer campos estáticos do tipo são acessados.
Como corrigir violações
Para corrigir uma violação dessa regra, inicialize todos os dados estáticos quando eles forem declarados e remova o construtor estático.
Example
// This struct violates the rule.
struct BadStruct
{
private static readonly int s_first;
private static readonly int s_second;
static BadStruct()
{
s_first = 1;
s_second = 2;
}
// ...
}
// This struct satisfies the rule.
struct GoodStruct
{
private static readonly int s_first = 1;
private static readonly int s_second = 2;
// ...
}
Quando suprimir avisos
Não suprima um aviso desta regra.
Regras conexas
CA1810: Inicializar campos estáticos do tipo de referência embutidos