Udostępnij za pośrednictwem


CA1829: Użyj właściwości Length/Count zamiast metody Enumerable.Count

Właściwości Wartość
Identyfikator reguły CA1829
Tytuł Użyj właściwości Length/Count zamiast metody Enumerable.Count
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 Count LINQ została użyta dla typu, który obsługuje równoważne, bardziej wydajne Length lub Count właściwości.

Opis reguły

Ta reguła wskazuje wywołania metody Count LINQ na kolekcjach typów, które mają równoważne, ale bardziej wydajne właściwości Length lub Count do pobrania tych samych danych. Length lub Count właściwość nie wylicza kolekcji, dlatego jest bardziej wydajna.

Ta reguła oznacza wywołania Count w odniesieniu do następujących typów kolekcji posiadających właściwość Length:

Ta reguła oznacza wywołania Count dla następujących typów kolekcji zawierających właściwość Count.

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

Jak naprawić naruszenia

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

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

class C
{
    public int GetCount(int[] array)
        => array.Count();

    public int GetCount(ICollection<int> collection)
        => collection.Count();
}
using System.Collections.Generic;

class C
{
    public int GetCount(int[] array)
        => array.Length;

    public int GetCount(ICollection<int> collection)
        => collection.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 Użyj właściwości Długość/Liczba zamiast funkcji Count(), jeśli jest dostępna z listy przedstawionych opcji.

Poprawka kodu dla ca1829 — użyj właściwości Length/Count zamiast Count(), jeśli jest dostępna

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć naruszenie tej reguły, jeśli nie martwisz się o wpływ na wydajność związany z niepotrzebnym wyliczaniem kolekcji w celu obliczenia ilości.

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

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

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

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

Zobacz też