Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| Vlastnost | Hodnota |
|---|---|
| ID pravidla | CA1829 |
| Název | Použijte vlastnost Length/Count místo metody Enumerable.Count |
| Kategorie | Výkon |
| Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
| Povoleno ve výchozím nastavení v .NET 10 | Jako návrh |
Příčina
Metoda Count LINQ byla použita u typu, který podporuje ekvivalentní, efektivnější Length nebo Count vlastnost.
Popis pravidla
Toto pravidlo označí Count volání metody LINQ u kolekcí typů, které mají ekvivalentní, ale efektivnější Length nebo Count vlastnost 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 Count volání následujících typů kolekcí s Count vlastností:
- System.Collections.ICollection
- System.Collections.Generic.ICollection<T>
- System.Collections.Generic.IReadOnlyCollection<T>
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 Count volání metody použitím Length přístupu k této vlastnosti.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 porušení 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().
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.
Související pravidla
- CA1826: Místo metody Linq Enumerable použijte vlastnost
- CA1827: Nepoužívejte Počet/LongCount, pokud lze použít libovolnou možnost
- CA1828: Nepoužívejte CountAsync/LongCountAsync, pokud je možné použít AnyAsync