Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Eigenschap | Waarde |
|---|---|
| Regel-id | CA1829 |
| Titel | De eigenschap Length/Count gebruiken in plaats van de methode Enumerable.Count |
| Categorie | Prestaties |
| Fix kan brekend of niet-brekend zijn | Niet-brekend |
| Standaard ingeschakeld in .NET 10 | Als suggestie |
| Toepasselijke talen | C# en Visual Basic |
Oorzaak
De Count LINQ-methode is gebruikt voor een type dat ondersteuning biedt voor een equivalente, efficiëntere Length eigenschap of Count eigenschap.
Beschrijving van regel
Deze regel markeert de aanroepen van de Count LINQ-methode op verzamelingen van typen die een gelijkwaardige, maar efficiëntere Length of Count eigenschap hebben om dezelfde gegevens op te halen.
Length of Count de eigenschap inventariseert de verzameling niet, dus is efficiënter.
Deze regel markeert aanroepen van de volgende verzamelingstypen Count met Length eigenschap:
Deze regel markeert Count-aanroepen op de volgende verzamelingstypen met de Count-eigenschap:
- System.Collections.ICollection
- System.Collections.Generic.ICollection<T>
- System.Collections.Generic.IReadOnlyCollection<T>
De geanalyseerde verzamelingstypen kunnen in de toekomst worden uitgebreid om meer zaken te behandelen.
Hoe schendingen op te lossen
Om een schending te verhelpen, vervangt u de Count methode-aanroep door gebruik van de Length of Count eigenschap. In de volgende twee codefragmenten ziet u bijvoorbeeld een schending van de regel en hoe u deze kunt oplossen:
using System.Collections.Generic;
using System.Linq;
class C
{
public int GetCount(int[] array)
=> array.Count();
public int GetCount(ICollection<int> collection)
=> collection.Count();
}
using System.Collections.Generic;
class C
{
public int GetCount(int[] array)
=> array.Length;
public int GetCount(ICollection<int> collection)
=> collection.Count;
}
Tip
Er is een codeoplossing beschikbaar voor deze regel in Visual Studio. Om het te gebruiken, plaatst u de cursor op de overtreding en drukt u op Ctrl+. (punt). Kies De eigenschap Lengte/aantal gebruiken in plaats van Count() als deze beschikbaar is in de lijst met opties die worden weergegeven.
Wanneer waarschuwingen onderdrukken
Het is veilig om een schending van deze regel te onderdrukken als u zich geen zorgen maakt over de gevolgen voor de prestaties van onnodige inventarisatie van verzamelingen om het aantal te berekenen.
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 CA1829
// The code that's violating the rule is on this line.
#pragma warning restore CA1829
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.CA1829.severity = none
Zie voor meer informatie Hoe codeanalysewaarschuwingen te onderdrukken.
Gerelateerde regels
- CA1826: Eigenschap gebruiken in plaats van Linq Enumerable-methode
- CA1827: Gebruik count/LongCount niet wanneer any kan worden gebruikt
- CA1828: Gebruik CountAsync/LongCountAsync niet wanneer AnyAsync kan worden gebruikt