Share via


CA1827: Ne használja a Count()/LongCount() függvényt, ha az Any() használható

Tulajdonság Érték
Szabályazonosító CA1827
Cím Ne használja a Count()/LongCount() függvényt, ha az Any() használható
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

A Count() vagy a LongCount()metódust használták, ahol az Any() metódus hatékonyabb lenne.

Szabály leírása

Ez a szabály a Count() és a LongCount() LINQ metódushívásokat jelöli, amelyek annak ellenőrzésére szolgálnak, hogy a gyűjtemény rendelkezik-e legalább egy elemmel. Ezek a metódusok a teljes gyűjteményt számbavetik a darabszám kiszámításához. Ugyanez az ellenőrzés gyorsabb az Any() metódussal, mivel elkerüli a gyűjtemény számbavételét.

Megjegyzés:

Ez a szabály a CA1860-hoz hasonló: Kerülje az "Enumerable.Any()" bővítménymetódus használatát. Ez a szabály azonban a Counttulajdonság használatát javasolja, míg ez a szabály a Linq Count()bővítménymetódusra vonatkozik.

Szabálysértések kijavítása

A szabálysértés kijavításához cserélje le a Count metódushívást LongCount a Any metódusra. A következő két kódrészlet például a szabály megsértését és a hiba elhárítását mutatja be:

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

class C
{
    public string M1(IEnumerable<string> list)
        => list.Count() != 0 ? "Not empty" : "Empty";

    public string M2(IEnumerable<string> list)
        => list.LongCount() > 0 ? "Not empty" : "Empty";
}
using System.Collections.Generic;
using System.Linq;

class C
{
    public string M1(IEnumerable<string> list)
        => list.Any() ? "Not empty" : "Empty";

    public string M2(IEnumerable<string> list)
        => list.Any() ? "Not empty" : "Empty";
}

Tipp.

Ehhez a szabályhoz kódjavítás érhető el a Visual Studióban. A használathoz helyezze a kurzort a szabálysértésre, és nyomja le a Ctrl+ billentyűt. (pont). Válassza a Ne használja a Darabszám() vagy a LongCount() lehetőséget, ha az Any() használható a megjelenő lehetőségek listájából.

Code fix for CA1827 - Do not use Count() or LongCount() when Any() can be used

Mikor kell letiltani a figyelmeztetéseket?

A szabály megsértését nyugodtan letilthatja, ha nem aggódik a szükségtelen gyűjtemények számbavételének teljesítményre gyakorolt hatása miatt a darabszám kiszámításához.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kapcsolódó információk