CA1864 : préférer la méthode « IDictionary.TryAdd(TKey, TValue) »
Propriété | Value |
---|---|
Identificateur de la règle | CA1864 |
Titre | Préférer la méthode 'IDictionary.TryAdd(TKey, TValue)' |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | À titre de suggestion |
Dictionary<TKey,TValue>.Add est protégé par un appel Dictionary<TKey,TValue>.ContainsKey(TKey).
Dictionary<TKey,TValue>.ContainsKey(TKey) et Dictionary<TKey,TValue>.Add effectuent une recherche, ce qui est redondant. Dictionary<TKey,TValue>.Add lève également une exception si la clé est déjà présente dans le dictionnaire. Il est plus efficace d’appeler Dictionary<TKey,TValue>.TryAdd, qui retourne une valeur booléenne indiquant si la valeur a été ajoutée ou non. TryAdd
ne remplace pas la valeur de la clé si la clé est déjà présente.
Remplacez un appel à Dictionary<TKey,TValue>.ContainsKey(TKey) qui est suivi d’un appel à Dictionary<TKey,TValue>.Add par un appel unique à Dictionary<TKey,TValue>.TryAdd.
L’extrait de code suivant montre une violation de CA1864 :
void Run(IDictionary<int, string> dictionary)
{
if(!dictionary.ContainsKey(2)) {
dictionary.Add(2, "Hello World");
}
}
Sub Run(dictionary As IDictionary(Of Integer, String))
If Not dictionary.ContainsKey(2) Then
dictionary.Add(2, "Hello World")
End If
End Sub
L’extrait de code suivant corrige la violation :
void Run(IDictionary<int, string> dictionary)
{
dictionary.TryAdd(2, "Hello World");
}
Sub Run(dictionary As IDictionary(Of Integer, String))
dictionary.TryAdd(2, "Hello World")
End Sub
Il est prudent de supprimer cet avertissement si les performances ne sont pas un problème et si vous gérez l’exception qui peut être levée par Dictionary<TKey,TValue>.Add.
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 CA1864
// The code that's violating the rule is on this line.
#pragma warning restore CA1864
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.CA1864.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :