CA1853 : appel inutile à « Dictionary.ContainsKey(key) »

Propriété Value
Identificateur de la règle CA1853
Titre Appel inutile à 'Dictionary.ContainsKey(key)'
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Version introduite .NET 7
Activé par défaut dans .NET 8 Comme suggestion

Cause

Un appel à Dictionary<TKey,TValue>.Remove(TKey) est protégé par un appel à Dictionary<TKey,TValue>.ContainsKey(TKey).

Description de la règle

Il n’est pas nécessaire de protéger Dictionary.Remove(key) avec Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) vérifie déjà si la clé existe et n’est pas levée si elle n’existe pas.

Comment corriger les violations

Supprimez le code de protection qui appelle Dictionary<TKey,TValue>.ContainsKey(TKey).

Exemple

L’extrait de code suivant montre une violation 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

L’extrait de code suivant corrige la violation :

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

Quand supprimer les avertissements

Vous pouvez supprimer un avertissement en toute sécurité si les performances ne constituent pas un problème.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

#pragma warning disable CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.