Partilhar via


CA1805: Não inicializar desnecessariamente

Propriedade valor
ID da regra CA1805
Cargo Não inicializar desnecessariamente
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Não

Causa

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

Descrição da regra

O tempo de execução do .NET inicializa todos os campos de tipos de referência para seus 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 potencialmente degradando o desempenho (como com o aumento do tamanho da montagem), 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, excluir a inicialização pode resultar em avisos CS0649 subsequentes sendo emitidos devido ao campo reter seu valor padrão para sempre. Nesses casos, uma solução melhor pode ser excluir totalmente o campo 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 destaca código potencialmente desnecessário e trabalho que pode ser evitado.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

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

Consulte também