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 10 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