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
, Count
of IsEmpty
eigenschap.
Beschrijving van regel
Om te bepalen of een verzamelingstype elementen bevat, is het efficiënter en duidelijker om de Length
eigenschappen , Count
of 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
, Count
of 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.