Бөлісу құралы:


CA1853: ненужный вызов "Dictionary.ContainsKey(key)"

Свойство Значение
Идентификатор правила CA1853
Заголовок Ненужный вызов метода "Dictionary.ContainsKey(key)"
Категория Производительность
Исправление является критическим или не критическим неразрывный
Представленная версия .NET 7
Включен по умолчанию в .NET 10 Как предложение
Применимые языки C# и Visual Basic

Причина

Вызов Dictionary<TKey,TValue>.Remove(TKey) охраняется посредством вызова Dictionary<TKey,TValue>.ContainsKey(TKey).

Описание правила

Нет необходимости охранять Dictionary.Remove(key) при помощи Dictionary.ContainsKey(key). Dictionary<TKey,TValue>.Remove(TKey) уже проверяет, существует ли ключ и не вызывается, если он не существует.

Устранение нарушений

Удалите защитный код, который вызывает Dictionary<TKey,TValue>.ContainsKey(TKey).

Пример

В следующем фрагменте кода показано нарушение 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

Следующий фрагмент кода исправляет нарушение.

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

Когда лучше отключить предупреждения

Подавление предупреждения безопасно, если производительность не является проблемой.

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

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

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

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

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.