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
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1854 |
| Titel | Geef de voorkeur aan de IDictionary.TryGetValue(TKey, out TValue) methode |
| Categorie | Prestaties |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
Een toegang tot het IDictionary element die wordt bewaakt door een IDictionary.ContainsKey check.
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 IDictionary.ContainsKey ook aanroept in een if-clausule om een opzoekactie te bewaken, worden er twee opzoekacties uitgevoerd wanneer er slechts één nodig is.
Hoe schendingen op te lossen
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
Herstel:
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 van IDictionary gebruikt die een waardezoekactie vermijdt bij het controleren van IDictionary.ContainsKey.
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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.