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


CA1829: используйте свойство Length/Count вместо метода Enumerable.Count

Свойство Значение
Идентификатор правила CA1829
Заголовок Используйте свойство Length/Count вместо метода Enumerable.Count
Категория Производительность
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Как предложение
Применимые языки C# и Visual Basic

Причина

Метод LINQ Count использовался для типа, поддерживающего эквивалентное и более эффективное свойство Length или Count.

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

Это правило помечает вызовы метода LINQ Count для коллекций типов, которые имеют эквивалентные, но более эффективные свойства Length или Count для получения одних и тех же данных. Свойство Length или Count не перечисляет коллекцию, поэтому является более эффективным.

Это правило отмечает вызовы Count для следующих типов коллекций со свойством Length:

Это правило помечает вызовы Count для следующих типов коллекций со свойством Count:

Проанализированные типы коллекций могут быть расширены в будущем, чтобы охватывать больше случаев.

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

Чтобы устранить нарушение, замените вызов метода Count доступом к свойству Length или Count. В следующих двух фрагментах кода показано нарушение правила и способы его устранения:

using System.Collections.Generic;
using System.Linq;

class C
{
    public int GetCount(int[] array)
        => array.Count();

    public int GetCount(ICollection<int> collection)
        => collection.Count();
}
using System.Collections.Generic;

class C
{
    public int GetCount(int[] array)
        => array.Length;

    public int GetCount(ICollection<int> collection)
        => collection.Count;
}

Совет

Для этого правила в Visual Studio доступно исправление кода. Чтобы использовать его, поместите курсор на нарушение и нажмите Ctrl+. (точка). В представленном списке выберите Использовать свойство Length/Count вместо Count(), если оно доступно.

Исправление кода для правила 1829: используйте свойство Length/Count вместо Count(), если оно доступно

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

Вы можете безопасно игнорировать нарушение этого правила, если вас не беспокоит воздействие на производительность от ненужного перечисления коллекции для вычисления её размера.

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

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

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

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

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

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

См. также