Udostępnij za pośrednictwem


CA1826: Użyj właściwości zamiast metody Linq Enumerable

Właściwości Wartość
Identyfikator reguły CA1826
Tytuł Użyj właściwości zamiast metody Linq Enumerable
Kategoria Wydajność
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Jako sugestia

Przyczyna

Metoda Enumerable LINQ została użyta dla typu, który obsługuje równoważną, bardziej wydajną właściwość.

Opis reguły

Ta reguła flaguje Enumerable wywołania metody LINQ dla kolekcji typów, które mają równoważne, ale bardziej wydajne właściwości w celu pobrania tych samych danych.

Ta reguła analizuje typy kolekcji, które implementują IReadOnlyList<T> , ale nie IList<T>.

Ta reguła flaguje wywołania następujących metod w następujących typach kolekcji:

Przeanalizowane typy i metody kolekcji mogą zostać rozszerzone w przyszłości w celu pokrycia większej liczby przypadków.

Jak naprawić naruszenia

Aby naprawić naruszenie, zastąp Enumerable wywołanie metody dostępem do właściwości. Na przykład następujące dwa fragmenty kodu pokazują naruszenie reguły i sposób jego naprawy:

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);
    }
}

Napiwek

Poprawka kodu jest dostępna dla tej reguły w programie Visual Studio. Aby go użyć, umieść kursor na naruszeniu i naciśnij Ctrl+. (kropka). Wybierz pozycję Użyj indeksatora z listy przedstawionych opcji.

Poprawka kodu dla ca1826 — używanie indeksatora

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć naruszenie tej reguły, jeśli nie obawiasz się wpływu na wydajność określonych Enumerable wywołań metod.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Konfigurowanie kodu do analizowania

Użyj następującej opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Wykluczanie metod FirstOrDefault i LastOrDefault

Tę regułę można skonfigurować, aby wykluczyć Enumerable.FirstOrDefault metody i Enumerable.LastOrDefault z analizy. Możesz rozważyć wykluczenie tych metod, jeśli czytelność jest istotna, ponieważ kod, który chcesz zastąpić, nie jest łatwo czytelny. Aby wykluczyć te metody, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Zobacz też