CA1860: Kerülje az "Enumerable.Any()" bővítménymetódus használatát
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1860 |
Cím | Kerülje az "Enumerable.Any()" bővítménymetódus használatát |
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
Enumerable.Any olyan típuson van meghívva, amely rendelkezik Length
egy , Count
vagy IsEmpty
tulajdonságú típussal.
Szabály leírása
Annak megállapításához, hogy egy gyűjteménytípus rendelkezik-e elemekkel, hatékonyabb és egyértelműbb a Length
metódus meghívásánál Enumerable.Any az , Count
vagy IsEmpty
(ha lehetséges) tulajdonságok használata.
Any()
, amely egy bővítménymetódus, nyelvvel integrált lekérdezést (LINQ) használ. Hatékonyabb a gyűjtemény saját tulajdonságaira támaszkodni, és egyértelművé teszi a szándékot is.
Feljegyzés
Ez a szabály a CA1827-hez hasonló: Ne használja a Count()/LongCount() függvényt, ha bármelyik() használható. Ez a szabály azonban a Linq Count()
metódusra vonatkozik, míg ez a szabály a Count
tulajdonság használatát javasolja.
Szabálysértések kijavítása
Cserélje le az Any() hívását a gyűjtemény , Count
vagy IsEmpty
tulajdonság hívásáraLength
.
Példa
A következő kódrészlet a CA1860 megsértését mutatja be:
bool HasElements(string[] strings)
{
return strings.Any();
}
Function HasElements(strings As String()) As Boolean
Return strings.Any()
End Function
A következő kódrészlet kijavítja a szabálysértést:
bool HasElements(string[] strings)
{
return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
Return strings.Length > 0
End Function
Mikor kell letiltani a figyelmeztetéseket?
Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani ezt a figyelmeztetést.
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 CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860
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.CA1860.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.