CA1854 : Préférer la méthode IDictionary.TryGetValue(TKey, out TValue)
Propriété | Value |
---|---|
Identificateur de la règle | CA1854 |
Titre | Préférer la méthode IDictionary.TryGetValue(TKey, out TValue) |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Comme suggestion |
Cause
Accès à un élément IDictionary
protégé par une vérification IDictionary.ContainsKey
.
Description de la règle
Lorsqu’un élément d’un IDictionary
est accessible, l’implémentation de l’indexeur recherche une valeur Null en appelant la méthode IDictionary.ContainsKey
. Si vous appelez IDictionary.ContainsKey
également dans une clause if
pour protéger une recherche de valeur, deux recherches sont effectuées quand une seule est nécessaire.
Comment corriger les violations
Remplacez l’appel IDictionary.ContainsKey
et l’accès à l’élément par un appel à la méthode IDictionary.TryGetValue
.
Violation :
public string? GetValue(string key)
{
if (_dictionary.ContainsKey(key))
{
return _dictionary[key];
}
return null;
}
Public Function GetValue(key As String) As String
If _dictionary.ContainsKey(key) Then
Return _dictionary(key)
End If
Return Nothing
End Function
Correctif :
public string? GetValue(string key)
{
if (_dictionary.TryGetValue(key, out string? value))
{
return value;
}
return null;
}
Public Function GetValue(key As String) As String
Dim value as String
If _dictionary.TryGetValue(key, value) Then
Return value
End If
Return Nothing
End Function
Quand supprimer les avertissements
Supprimez cet avertissement en toute sécurité si vous utilisez une implémentation personnalisée de IDictionary
qui évite une recherche de valeur lors de l’exécution de la vérification IDictionary.ContainsKey
.
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 CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
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.CA1854.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.