Megosztás a következőn keresztül:


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 Lengthegy , Countvagy IsEmptytulajdonsá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 Lengthmetódus meghívásánál Enumerable.Any az , Countvagy 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.

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 , Countvagy 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.