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 elementu "Dictionary.ContainsKey(key)"
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Wprowadzona wersja .NET 7
Domyślnie włączone na platformie .NET 9 Jako sugestia

Przyczyna

Wywołanie metody jest Dictionary<TKey,TValue>.Remove(TKey) chronione za pomocą wywołania metody Dictionary<TKey,TValue>.ContainsKey(TKey).

Opis reguły

Nie ma potrzeby ochrony Dictionary.Remove(key) za pomocą polecenia 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 ochrony, który wywołuje metodę 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.