CA1853: Onödigt anrop till "Dictionary.ContainsKey(key)"
Property | Värde |
---|---|
Regel-ID | CA1853 |
Title | Onödigt anrop till "Dictionary.ContainsKey(key)" |
Kategori | Prestanda |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Introducerad version | .NET 7 |
Aktiverad som standard i .NET 9 | Som förslag |
Orsak
Ett anrop till Dictionary<TKey,TValue>.Remove(TKey) är skyddat med ett anrop till Dictionary<TKey,TValue>.ContainsKey(TKey).
Regelbeskrivning
Det finns ingen anledning att skydda Dictionary.Remove(key)
med Dictionary.ContainsKey(key)
. Dictionary<TKey,TValue>.Remove(TKey) kontrollerar redan om nyckeln finns och inte utlöser den om den inte finns.
Så här åtgärdar du överträdelser
Ta bort skyddskoden som anropar Dictionary<TKey,TValue>.ContainsKey(TKey).
Exempel
Följande kodfragment visar ett brott mot 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
Följande kodfragment åtgärdar överträdelsen:
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
När du ska ignorera varningar
Det är säkert att ignorera en varning om prestanda inte är ett problem.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1853
// The code that's violating the rule is on this line.
#pragma warning restore CA1853
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1853.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.