Compartilhar via


CA1853: chamada desnecessária para 'Dictionary.ContainsKey(key)'

Property Valor
ID da regra CA1853
Título Chamada desnecessária para 'Dictionary.ContainsKey(key)'
Categoria Desempenho
Correção interruptiva ou sem interrupção Sem interrupção
Versão introduzida .NET 7
Habilitado por padrão no .NET 8 Como sugestão

Causa

Uma chamada para Dictionary<TKey,TValue>.Remove(TKey) é protegida com uma chamada para Dictionary<TKey,TValue>.ContainsKey(TKey).

Descrição da regra

Não há necessidade de proteger Dictionary.Remove(key) com Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) já verifica se a chave existe e não é lançada se ela não existe.

Como corrigir violações

Remova o código de proteção que chama Dictionary<TKey,TValue>.ContainsKey(TKey).

Exemplo

O seguinte snippet de código mostra uma violação do CA1853:

Dictionary<string, int> d = new();
if (d.ContainsKey("name"))
    d.Remove("name");
Class C
    Shared Sub S()
        Dim d As New Dictionary(Of String, Integer)
        If d.ContainsKey("name") Then
            d.Remove("name")
        End If
    End Sub
End Class

O seguinte snippet de código conserta a violação:

Dictionary<string, int> d = new();
d.Remove("name");
Class C
    Shared Sub S()
        Dim d As New Dictionary(Of String, Integer)
        d.Remove("name")
    End Sub
End Class

Quando suprimir avisos

É seguro fechar um aviso se o desempenho não é uma preocupação.

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 CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853

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.CA1853.severity = none

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