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.