CA1853: ненужный вызов "Dictionary.ContainsKey(key)"
Свойство | Значение |
---|---|
Идентификатор правила | CA1853 |
Заголовок | Ненужный вызов "Dictionary.ContainsKey(key)" |
Категория | Производительность |
Исправление является критическим или не критическим | Не критическое |
Представленные версии | .NET 7 |
Включен по умолчанию в .NET 9 | Как предложение |
Причина
Вызов 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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.