Udostępnij za pośrednictwem


CA1853: Niepotrzebne wywołanie elementu "Dictionary.ContainsKey(key)"

Właściwości Wartość
Identyfikator reguły CA1853
Tytuł Niepotrzebne wywołanie metody 'Dictionary.ContainsKey(key)'
Kategoria Wydajność
Poprawka łamiąca lub nienaruszająca Niezgodność
Wprowadzona wersja .NET 7
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

Przyczyna

Wywołanie Dictionary<TKey,TValue>.Remove(TKey) jest chronione wywołaniem Dictionary<TKey,TValue>.ContainsKey(TKey).

Opis reguły

Nie ma potrzeby zabezpieczania Dictionary.Remove(key) za pomocą Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) już sprawdza, czy klucz istnieje i nie zgłasza go, jeśli nie istnieje.

Jak naprawić naruszenia

Usuń kod zabezpieczający, który wywołuje Dictionary<TKey,TValue>.ContainsKey(TKey).

Przykład

Poniższy fragment kodu przedstawia naruszenie 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

Poniższy fragment kodu naprawia naruszenie:

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

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie, jeśli wydajność nie jest problemem.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.