Sdílet prostřednictvím


CA1826: Místo metody Linq Enumerable použijte vlastnost

Vlastnost Hodnota
ID pravidla CA1826
Název Použijte vlastnost namísto vyčíslitelné metody Linq
Kategorie Výkon
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 9 Jako návrh

Příčina

Metoda Enumerable LINQ byla použita u typu, který podporuje ekvivalentní, efektivnější vlastnost.

Popis pravidla

Toto pravidlo označí Enumerable volání metody LINQ u kolekcí typů, které mají ekvivalentní, ale efektivnější vlastnosti pro načtení stejných dat.

Toto pravidlo analyzuje typy kolekcí, které implementují IReadOnlyList<T> , ale ne IList<T>.

Toto pravidlo označuje volání následujících metod pro tyto typy kolekcí:

Analyzované typy a metody kolekce mohou být v budoucnu rozšířeny, aby zahrnovaly více případů.

Jak opravit porušení

Chcete-li opravit porušení, nahraďte Enumerable volání metody přístupem k vlastnosti. Například následující dva fragmenty kódu ukazují porušení pravidla a postup jeho opravy:

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

Oprava kódu je k dispozici pro toto pravidlo v sadě Visual Studio. Pokud ho chcete použít, umístěte kurzor na porušení a stiskněte ctrl+. (tečka). V zobrazeném seznamu možností zvolte Použít indexer .

Oprava kódu pro CA1826 – Použití indexeru

Kdy potlačit upozornění

Je bezpečné potlačit porušení tohoto pravidla, pokud vás nezajímá dopad na výkon konkrétních Enumerable volání metod.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Konfigurace kódu pro analýzu

Pomocí následující možnosti nakonfigurujte, ve kterých částech základu kódu se má toto pravidlo spouštět.

Vyloučit metody FirstOrDefault a LastOrDefault

Toto pravidlo můžete nakonfigurovat tak, aby vyloučilo Enumerable.FirstOrDefault metody a Enumerable.LastOrDefault metody z analýzy. Pokud jde o čitelnost, můžete zvážit vyloučení těchto metod, protože kód, který byste napsali, aby je nahradil, není snadno čitelný. Pokud chcete tyto metody vyloučit, přidejte do souboru .editorconfig v projektu následující dvojici klíč-hodnota:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Viz také