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 romboló vagy nem romboló Nem törhető
Alapértelmezés szerint engedélyezve a .NET 10-ben Javaslatként
Alkalmazandó nyelvek C# és Visual Basic

Ok

Enumerable.Any egy olyan típuson van meghívva, amely rendelkezik Length, Count, vagy IsEmptytulajdonsággal.

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, Count vagy IsEmpty tulajdonságok használata, ha lehetséges, mint a Enumerable.Any metódus meghívása.

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.

Megjegyzé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 Counttulajdonsá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 Length, Count, vagy IsEmpty tulajdonságának hívására.

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.