Share via


CA1826: Eigenschap gebruiken in plaats van Linq Enumerable-methode

Eigenschappen Weergegeven als
Regel-id CA1826
Titel Eigenschap gebruiken in plaats van Linq Enumerable-methode
Categorie Prestaties
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als suggestie

Oorzaak

De Enumerable LINQ-methode is gebruikt voor een type dat een equivalente, efficiëntere eigenschap ondersteunt.

Beschrijving van regel

Met deze regel wordt de Enumerable LINQ-methode aangeroepen voor verzamelingen typen met gelijkwaardige maar efficiëntere eigenschappen om dezelfde gegevens op te halen.

Met deze regel worden verzamelingstypen geanalyseerd die wel maar niet IList<T>worden geïmplementeerdIReadOnlyList<T>.

Met deze regel worden de volgende methoden voor deze verzamelingstypen aangeroepen:

De geanalyseerde verzamelingstypen en -methoden kunnen in de toekomst worden uitgebreid om meer gevallen te behandelen.

Schendingen oplossen

Als u een schending wilt oplossen, vervangt u de methode-aanroep Enumerable door eigenschapstoegang. In de volgende twee codefragmenten ziet u bijvoorbeeld een schending van de regel en hoe u deze kunt oplossen:

using System;
using System.Collections.Generic;
using System.Linq;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list.First());
        Console.Write(list.Last());
        Console.Write(list.Count());
    }
}
using System;
using System.Collections.Generic;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list[0]);
        Console.Write(list[list.Count - 1]);
        Console.Write(list.Count);
    }
}

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 Indexeerfunctie gebruiken in de lijst met opties die worden weergegeven.

Codefix voor CA1826 - Indexeerfunctie gebruiken

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 specifieke Enumerable methode-aanroepen.

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

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Code configureren om te analyseren

Gebruik de volgende optie om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.

FirstOrDefault- en LastOrDefault-methoden uitsluiten

U kunt deze regel configureren om de Enumerable.FirstOrDefault en Enumerable.LastOrDefault methoden uit te sluiten van analyse. U kunt overwegen deze methoden uit te sluiten als de leesbaarheid een probleem is, omdat de code die u schrijft om ze te vervangen, niet gemakkelijk leesbaar is. Als u deze methoden wilt uitsluiten, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Zie ook