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ée par défaut dans .NET 9 | À titre de 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.