CA1836: Az IsEmpty előnyben részesítve a darabszámot, ha elérhető
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1836 |
Cím | Az IsEmpty előnyben részesítve a Darabszámot, ha elérhető |
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 tulajdonságot Length
vagy a Count<TSource>(IEnumerable<TSource>) bővítménymetódust arra használták, hogy megállapítsa, hogy az objektum tartalmaz-e elemeket az érték 0
vagy 1
az objektum összehasonlításával, és az objektumnak hatékonyabb IsEmpty
tulajdonsága van, amelyet használhat helyette.
Szabály leírása
Ez a szabály jelzi a tulajdonságokra Count
vagy LongCount<TSource>(IEnumerable<TSource>)Length
Count<TSource>(IEnumerable<TSource>) LINQ-metódusokra irányuló hívásokat, ha azok alapján állapítja meg, hogy az objektum tartalmaz-e elemeket, és az objektum hatékonyabb IsEmpty
tulajdonsággal rendelkezik.
A szabály elemzése eredetileg átfedésben volt a CA1827, a CA1828 és a CA1829 hasonló szabályokkal; az ilyen szabályok elemzőit egyesítették a CA1836-hoz tartozóval, hogy átfedés esetén a legjobb diagnózist jelentse.
Szabálysértések kijavítása
A szabálysértés kijavításához cserélje le a Count<TSource>(IEnumerable<TSource>) metódushívást LongCount<TSource>(IEnumerable<TSource>) vagy a Length
Count
tulajdonsághozzáférést, ha egy olyan műveletben használják, amely megállapítja, hogy az objektum üres-e a IsEmpty
tulajdonsághozzáférés használatával. 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.Concurrent;
class C
{
ConcurrentQueue<int> _queue;
public bool IsEmpty => _queue.Count == 0;
}
using System.Collections.Concurrent;
class C
{
ConcurrentQueue<int> _queue;
public bool IsEmpty => _queue.IsEmpty;
}
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). A "Darabszám" helyett válassza az IsEmpty előnyben részesítése lehetőséget annak megállapításához, hogy az objektum tartalmaz-e elemeket a megjelenő 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 elemek számbavételének teljesítménybeli 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 CA1836
// The code that's violating the rule is on this line.
#pragma warning restore CA1836
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.CA1836.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kapcsolódó szabályok
- 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ó
- CA1829: Az Enumerable.Count metódus helyett használja a Length/Count tulajdonságot
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: