CA1829: Az Enumerable.Count metódus helyett használja a Length/Count tulajdonságot
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1829 |
Cím | Az Enumerable.Count metódus helyett használja a Length/Count tulajdonságot |
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 LINQ metódust egy egyenértékű, hatékonyabb Length
vagy Count
tulajdonságot támogató típuson használták.
Szabály leírása
Ez a szabály megjelöli a Count LINQ metódust, amely az egyenértékű, de hatékonyabb Length
vagy Count
tulajdonságú típusok gyűjteményeit hívja meg ugyanazon adatok lekéréséhez. Length
vagy Count
a tulajdonság nem sorolja fel a gyűjteményt, ezért hatékonyabb.
Ez a szabály a Count következő, tulajdonsággal rendelkező gyűjteménytípusokat Length
hívja meg:
Ez a szabály a következő gyűjteménytípusokat Count hívja meg a Count
tulajdonsággal:
- System.Collections.ICollection
- System.Collections.Generic.ICollection<T>
- System.Collections.Generic.IReadOnlyCollection<T>
Az elemzett gyűjteménytípusok a jövőben további esetekre is kiterjeszthetők.
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 a vagy Count
a Length
tulajdonsághozzáférés használatára. 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 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;
}
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 Hossz/Darabszám tulajdonságot a Count() helyett, ha elérhető a bemutatott lehetőségek listájából.
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 CA1829
// The code that's violating the rule is on this line.
#pragma warning restore CA1829
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.CA1829.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kapcsolódó szabályok
- CA1826: Tulajdonság használata a Linq Enumerable metódus helyett
- CA1827: Ne használja a Count/LongCount függvényt, ha bármelyik használható
- CA1828: Ne használja a CountAsync/LongCountAsync parancsot, ha az AnyAsync használható
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: