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 łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Jako sugestia
Zastosowane języki C# i Visual Basic

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 oznacza wywołania metody LINQ dla kolekcji typów, które mają równoważne, ale bardziej wydajne właściwości służące do pozyskiwania tych samych danych.

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

Ta reguła oznacza wywołania następujących metod na tych 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, wywołanie metody Enumerable zastąp 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);
    }
}

Wskazówka

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 określonych wywołań metod Enumerable na wydajność.

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 kodu mają być objęte tą regułą.

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ż