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 9 | 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.