CA1853: Onnodige aanroep naar 'Dictionary.ContainsKey(key)'

Eigenschap Waarde
Regel-id CA1853
Titel Onnodige aanroep naar 'Dictionary.ContainsKey(key)'
Categorie Prestaties
Fix kan brekend of niet-brekend zijn Niet-brekend
Geïntroduceerde versie .NET 7
Standaard ingeschakeld in .NET 10 Als suggestie
Toepasselijke talen C# en Visual Basic

Oorzaak

Een aanroep naar Dictionary<TKey,TValue>.Remove(TKey) is beveiligd met een aanroep naar Dictionary<TKey,TValue>.ContainsKey(TKey).

Beschrijving van regel

Er is geen noodzaak om Dictionary.Remove(key) te bewaken met Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) controleert al of de sleutel bestaat en wordt niet gegenereerd als deze niet bestaat.

Hoe schendingen op te lossen

Verwijder de beveiligingscode die aanroept Dictionary<TKey,TValue>.ContainsKey(TKey).

Voorbeeld

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 voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.