Share via


CA1860: Vermijd het gebruik van de extensiemethode Enumerable.Any()

Eigenschappen Weergegeven als
Regel-id CA1860
Titel Vermijd het gebruik van de extensiemethode Enumerable.Any()
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als suggestie

Oorzaak

Enumerable.Any wordt aangeroepen op een type met een Length, Countof IsEmpty eigenschap.

Beschrijving van regel

Om te bepalen of een verzamelingstype elementen bevat, is het efficiënter en duidelijker om de Lengtheigenschappen , Countof IsEmpty (indien mogelijk) te gebruiken dan de Enumerable.Any methode aan te roepen.

Any(), een extensiemethode, maakt gebruik van LANGUAGE Integrated Query (LINQ). Het is efficiënter om te vertrouwen op de eigen eigenschappen van de verzameling en het verduidelijkt ook de intentie.

Notitie

Deze regel is vergelijkbaar met CA1827: gebruik geen count()/LongCount() wanneer Any() kan worden gebruikt. Deze regel is echter van toepassing op de Linq-methode Count() , terwijl deze regel aangeeft dat de eigenschap wordt Count gebruikt.

Schendingen oplossen

Vervang een aanroep van Any() door een aanroep van de verzameling Length, Countof IsEmpty eigenschap.

Opmerking

In het volgende codefragment ziet u een schending van CA1860:

bool HasElements(string[] strings)
{
    return strings.Any();
}
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

Met het volgende codefragment wordt de schending opgelost:

bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

Wanneer waarschuwingen onderdrukken

Het is veilig om deze waarschuwing te onderdrukken als de prestaties geen probleem zijn.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

#pragma warning disable CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

[*.{cs,vb}]
dotnet_diagnostic.CA1860.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.