CA1826: Tulajdonság használata a Linq Enumerable metódus helyett
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1826 |
Cím | Tulajdonság használata a Linq Enumerable metódus helyett |
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 Enumerable LINQ metódust olyan típuson használták, amely egy egyenértékű, hatékonyabb tulajdonságot támogat.
Szabály leírása
Ez a szabály jelzi, hogy a Enumerable LINQ metódus olyan típusok gyűjteményeit hívja meg, amelyek egyenértékű, de hatékonyabb tulajdonságokkal rendelkeznek ugyanazon adatok lekéréséhez.
Ez a szabály olyan gyűjteménytípusokat elemez, amelyek implementálják IReadOnlyList<T> , de nem IList<T>.
Ez a szabály az alábbi metódusokra irányuló hívásokat jelöli az alábbi gyűjteménytípusokon:
- System.Linq.Enumerable.Count
- System.Linq.Enumerable.First
- System.Linq.Enumerable.FirstOrDefault
- System.Linq.Enumerable.Last
- System.Linq.Enumerable.LastOrDefault
Az elemzett gyűjteménytípusok és metódusok 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 metódushívást tulajdonsághozzáférésre Enumerable . 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;
using System.Collections.Generic;
using System.Linq;
class C
{
public void M(IReadOnlyList<string> list)
{
Console.Write(list.First());
Console.Write(list.Last());
Console.Write(list.Count());
}
}
using System;
using System.Collections.Generic;
class C
{
public void M(IReadOnlyList<string> list)
{
Console.Write(list[0]);
Console.Write(list[list.Count - 1]);
Console.Write(list.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 az Indexelő használata lehetőséget a megjelenő lehetőségek listájában.
Mikor kell letiltani a figyelmeztetéseket?
Ha nem aggódik az adott Enumerable metódushívások teljesítményre gyakorolt hatása miatt, nyugodtan letilthatja a szabály megsértését.
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 CA1826
// The code that's violating the rule is on this line.
#pragma warning restore CA1826
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.CA1826.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Kód konfigurálása elemzéshez
A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.
FirstOrDefault és LastOrDefault metódusok kizárása
Ezt a szabályt úgy konfigurálhatja, hogy kizárja a metódusokat és Enumerable.LastOrDefault a metódusokat az Enumerable.FirstOrDefault elemzésből. Érdemes lehet kizárni ezeket a metódusokat, ha az olvashatóság aggodalomra ad okot, mivel a lecserélni kívánt kód nem könnyen olvasható. A metódusok kizárásához adja hozzá a következő kulcs-érték párokat a projekt egyik .editorconfig fájljához:
dotnet_code_quality.CA1826.exclude_ordefault_methods = true
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: