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.
| Eigenschappen | Weergegeven als |
|---|---|
| Regel-id | CA1853 |
| Titel | Onnodige aanroep naar 'Dictionary.ContainsKey(key)' |
| Categorie | Prestaties |
| Oplossing is brekend of niet-brekend | Niet-brekend |
| Geïntroduceerde versie | .NET 7 |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
Oorzaak
Een oproep om te Dictionary<TKey,TValue>.Remove(TKey) worden bewaakt met een aanroep naar Dictionary<TKey,TValue>.ContainsKey(TKey).
Beschrijving van regel
Er is geen noodzaak om mee Dictionary.Remove(key)te bewakenDictionary.ContainsKey(key).
Dictionary<TKey,TValue>.Remove(TKey) controleert al of de sleutel bestaat en wordt niet gegenereerd als deze niet bestaat.
Schendingen oplossen
Verwijder de beveiligingscode die aanroept Dictionary<TKey,TValue>.ContainsKey(TKey).
Opmerking
Het volgende codefragment toont een schending van CA1853:
Dictionary<string, int> d = new();
if (d.ContainsKey("name"))
d.Remove("name");
Class C
Shared Sub S()
Dim d As New Dictionary(Of String, Integer)
If d.ContainsKey("name") Then
d.Remove("name")
End If
End Sub
End Class
Met het volgende codefragment wordt de schending opgelost:
Dictionary<string, int> d = new();
d.Remove("name");
Class C
Shared Sub S()
Dim d As New Dictionary(Of String, Integer)
d.Remove("name")
End Sub
End Class
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing te onderdrukken als de prestaties geen probleem zijn.
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 CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853
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.CA1853.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.