CA1829: Místo metody Enumerable.Count použijte vlastnost Length/Count.

Vlastnost Hodnota
ID pravidla CA1829
Název Použijte vlastnost Length/Count místo metody Enumerable.Count
Kategorie Výkon
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako návrh
Příslušné jazyky C# a Visual Basic

Příčina

Metoda Count LINQ byla použita u typu, který podporuje ekvivalentní, efektivnější Length nebo Count vlastnost.

Popis pravidla

Toto pravidlo označí volání metody Count LINQ pro kolekce typů, které mají ekvivalentní, ale efektivnější vlastnost Length nebo Count pro načtení stejných dat. Length nebo Count vlastnost nevyčtuje kolekci, proto je efektivnější.

Toto pravidlo označuje Count volání následujících typů kolekcí s Length vlastností:

Toto pravidlo označuje volání Count u následujících typů kolekcí s vlastností Count.

Analyzované typy kolekcí mohou být v budoucnu rozšířeny, aby zahrnovaly více případů.

Jak opravit porušení

Chcete-li opravit porušení, nahraďte volání metody Count použitím přístupu k vlastnosti Length nebo Count. Například následující dva fragmenty kódu ukazují porušení pravidla a postup jeho opravy:

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;
}

Tip

Oprava kódu je k dispozici pro toto pravidlo v sadě Visual Studio. Pokud ho chcete použít, umístěte kurzor na chybu a stiskněte Ctrl. (tečka). Pokud je k dispozici v seznamu zobrazených možností, zvolte použít vlastnost Délka/Počet místo funkce Count().

Oprava kódu pro CA1829 – Pokud je k dispozici, použijte vlastnost Length/Count místo count().

Kdy potlačit upozornění

Je bezpečné potlačit porušení tohoto pravidla, pokud vás nezajímá dopad na výkon z nepotřebného výčtu kolekce pro výpočet počtu.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také