Partilhar 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
A correção está quebrando ou não quebrando Sem quebra
Versão introduzida .NET 7
Habilitado por padrão no .NET 8 Como sugestão

Motivo

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

Descrição da regra

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

Como corrigir violações

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

Exemplo

O seguinte trecho de código mostra uma violação de 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 trecho de código a seguir corrige 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 suprimir um aviso se o desempenho não for uma preocupação.

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

Para desabilitar a regra para um arquivo, pasta ou projeto, defina sua severidade como none no arquivo de configuração.

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

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