Share via


CA1836: Prefer IsEmpty over Count indien beschikbaar

Eigenschappen Weergegeven als
Regel-id CA1836
Titel Prefer IsEmpty over Count indien beschikbaar
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als suggestie

Oorzaak

De Count of eigenschap of Length de Count<TSource>(IEnumerable<TSource>) extensiemethode is gebruikt om te bepalen of het object items bevat door de waarde te 0 vergelijken met of 1, en het object heeft een efficiëntere IsEmpty eigenschap die in plaats daarvan kan worden gebruikt.

Beschrijving van regel

Deze regel markeert de aanroepen naar de Count en Length eigenschappen of Count<TSource>(IEnumerable<TSource>) en LongCount<TSource>(IEnumerable<TSource>) LINQ-methoden wanneer ze worden gebruikt om te bepalen of het object items bevat en het object een efficiëntere IsEmpty eigenschap heeft.

De analyse van deze regel overlapt oorspronkelijk met soortgelijke regels CA1827, CA1828 en CA1829; de analyse van dergelijke regels zijn samengevoegd met de analyse voor CA1836 om de beste diagnose te rapporteren in geval van overlapping.

Schendingen oplossen

Als u een schending wilt oplossen, vervangt u de Count<TSource>(IEnumerable<TSource>) aanroep of LongCount<TSource>(IEnumerable<TSource>) methodeaanroep of de toegang tot de Count Length eigenschap wanneer deze wordt gebruikt in een bewerking die bepaalt of het object leeg is met het gebruik van de IsEmpty eigenschapstoegang. In de volgende twee codefragmenten ziet u bijvoorbeeld een schending van de regel en hoe u deze kunt oplossen:

using System.Collections.Concurrent;

class C
{
    ConcurrentQueue<int> _queue;
    public bool IsEmpty => _queue.Count == 0;
}
using System.Collections.Concurrent;

class C
{
    ConcurrentQueue<int> _queue;
    public bool IsEmpty => _queue.IsEmpty;
}

Tip

Er is een codeoplossing beschikbaar voor deze regel in Visual Studio. Als u deze wilt gebruiken, plaatst u de cursor op de schending en drukt u op Ctrl+. (punt). Kies Voorkeur 'IsEmpty' boven 'Aantal' om te bepalen of het object al dan niet items bevat uit de lijst met opties die worden weergegeven.

Codefix voor CA1836 - Geef de voorkeur aan 'IsEmpty' boven 'Aantal' om te bepalen of het object items bevat of niet

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 opsomming van items 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 CA1836
// The code that's violating the rule is on this line.
#pragma warning restore CA1836

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.CA1836.severity = none

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook