Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1860 |
| Заголовок | Избегайте использования расширяющего метода Enumerable.Any(). |
| Категория | Производительность |
| Исправление является критическим или не критическим | неразрывный |
| Включен по умолчанию в .NET 10 | Как предложение |
| Применимые языки | C# и Visual Basic |
Причина
Enumerable.Any вызывается для типа, который имеет Length, Count или IsEmptyсвойство.
Описание правила
Чтобы определить, имеет ли тип коллекции какие-либо элементы, эффективнее и понятнее использовать Lengthсвойства , Countили IsEmpty (если это возможно), чем вызывать Enumerable.Any метод.
Any(), который является методом расширения, использует языковой интегрированный запрос (LINQ). Более эффективно полагаться на собственные свойства коллекции, а также уточнить намерение.
Примечание.
Это правило похоже на CA1827: не используйте Count()/LongCount() в случаях, когда можно использовать Any(). Однако это правило применяется к методу Linq
Устранение нарушений
Замените вызов Any() вызовом свойства Length, Count, или IsEmpty коллекции.
Пример
В следующем фрагменте кода показано нарушение CA1860:
bool HasElements(string[] strings)
{
return strings.Any();
}
Function HasElements(strings As String()) As Boolean
Return strings.Any()
End Function
Следующий фрагмент кода исправляет нарушение.
bool HasElements(string[] strings)
{
return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
Return strings.Length > 0
End Function
Когда лучше отключить предупреждения
Это предупреждение безопасно подавлять, если производительность не является проблемой.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA1860.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.