Compartilhar via


CA1805: Não inicializar desnecessariamente

Property Valor
ID da regra CA1805
Título Não inicializar desnecessariamente
Categoria Desempenho
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Não

Causa

Um campo de uma classe é inicializado explicitamente com o valor padrão desse tipo de campo.

Descrição da regra

O runtime do .NET inicializa todos os campos de tipos de referência com os valores padrão antes de executar o construtor. Na maioria dos casos, inicializar explicitamente um campo com seu valor padrão em um construtor é redundante, adicionando custos de manutenção e desempenho potencialmente degradante (como com o aumento do tamanho do assembly), e a inicialização explícita pode ser removida.

Como corrigir violações

Na maioria dos casos, a correção adequada é excluir a inicialização desnecessária.

class C
{
    // Violation
    int _value1 = 0;

    // Fixed
    int _value1;
}

Em alguns casos, a exclusão da inicialização pode resultar na emissão de avisos CS0649 subsequentes devido ao campo manter seu valor padrão para sempre. Nesses casos, uma correção melhor pode ser excluir o campo inteiramente ou substituí-lo por uma propriedade:

class C
{
    // Violation
    private static readonly int s_value = 0;

    // Fixed
    private static int Value => 0;
}

Quando suprimir avisos

É sempre seguro suprimir o aviso, pois o aviso simplesmente realça o código e o trabalho potencialmente desnecessários que podem ser evitados.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

#pragma warning disable CA1805
// The code that's violating the rule is on this line.
#pragma warning restore CA1805

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA1805.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Confira também