Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
CA1854: Voorkeur geven aan de
| 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 10 | 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 IDictionary.ContainsKey component aanroept if 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.