CA1854: Voorkeur geven aan de IDictionary.TryGetValue(TKey, out TValue)
methode
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1854 |
Titel | Geef de voorkeur aan de IDictionary.TryGetValue(TKey, out TValue) methode |
Categorie | Prestaties |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Als suggestie |
Oorzaak
Een IDictionary
elementtoegang die wordt bewaakt door een IDictionary.ContainsKey
controle.
Beschrijving van regel
Wanneer een element van een IDictionary
element wordt geopend, controleert de implementatie van de indexeerfunctie op een null-waarde door de methode aan te IDictionary.ContainsKey
roepen. Als u ook een if
component aanroept IDictionary.ContainsKey
om een waardezoekactie te bewaken, worden er twee opzoekacties uitgevoerd wanneer er slechts één nodig is.
Schendingen oplossen
Vervang de IDictionary.ContainsKey
aanroep en elementtoegang door een aanroep naar de IDictionary.TryGetValue
methode.
Schending:
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
Oplossing:
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
Wanneer waarschuwingen onderdrukken
Het is veilig om deze waarschuwing te onderdrukken als u een aangepaste implementatie gebruikt om een waardezoekactie te voorkomen bij het uitvoeren van IDictionary
de IDictionary.ContainsKey
controle.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1854
// The code that's violating the rule is on this line.
#pragma warning restore CA1854
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1854.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.