Megosztás a következőn keresztül:


CA1853: A Dictionary.ContainsKey(key)" szükségtelen hívása

Tulajdonság Érték
Szabályazonosító CA1853
Cím A "Dictionary.ContainsKey(key)" szükségtelen hívása
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Bevezetett verzió .NET 7
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

A hívásokat Dictionary<TKey,TValue>.Remove(TKey) egy hívás Dictionary<TKey,TValue>.ContainsKey(TKey)védi.

Szabály leírása

Nem kell őrködni Dictionary.Remove(key) vele Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) már ellenőrzi, hogy a kulcs létezik-e, és nem dobja-e, ha nem létezik.

Szabálysértések kijavítása

Távolítsa el a hívható Dictionary<TKey,TValue>.ContainsKey(TKey)védelmi kódot.

Példa

A következő kódrészlet a CA1853 megsértését mutatja be:

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

A következő kódrészlet kijavítja a szabálysértést:

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

Mikor kell letiltani a figyelmeztetéseket?

Nyugodtan el lehet tiltani a figyelmeztetést, ha a teljesítmény nem okoz gondot.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1853.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.