CA1829: Length/Count-Eigenschaft anstelle der Enumerable.Count-Methode verwenden.

Eigenschaft Wert
Regel-ID CA1829
Titel Length/Count-Eigenschaft anstelle der Enumerable.Count-Methode verwenden.
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 9 aktiviert Als Vorschlag

Ursache

Die Count LINQ-Methode wurde für einen Typ verwendet, der eine äquivalente, effizientere Length- oder Count-Eigenschaft unterstützt.

Regelbeschreibung

Diese Regel kennzeichnet die Count LINQ-Methodenaufrufe für Auflistungen von Typen, die über eine entsprechende, aber effizientere Length- oder Count-Eigenschaft zum Abrufen derselben Daten verfügen. Length- oder Count-Eigenschaft listet die Auflistung nicht auf und ist daher effizienter.

Diese Regel kennzeichnet Count-Aufrufe für die folgenden Auflistungstypen mit Length-Eigenschaft:

Diese Regel kennzeichnet Count-Aufrufe für die folgenden Auflistungstypen mit Count-Eigenschaft:

Die analysierten Auflistungstypen können in der Zukunft erweitert werden, um mehr Fälle abzudecken.

Behandeln von Verstößen

Um einen Verstoß zu beheben, ersetzen Sie den Count Methodenaufrufe durch die Verwendung des Length- oder Count-Eigenschaftszugriffs. Die folgenden beiden Codeausschnitte zeigen z. B. einen Verstoß gegen die Regel und wie dieser korrigiert werden kann:

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

Tipp

Für diese Regel ist ein Codefix in Visual Studio verfügbar. Um ihn zu nutzen, muss der Cursor auf dem Verstoß platziert und Strg+. (Punkt) gedrückt werden. Wählen Sie aus der Liste der angezeigten Optionen die Length/Count-Eigenschaft anstelle von Count(), wenn verfügbar.

Codekorrektur für CA1829 - Length/Count-Eigenschaft anstelle von Count() verwenden, wenn verfügbar

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, einen Verstoß gegen diese Regel zu unterdrücken, wenn Sie sich keine Gedanken über die Auswirkungen auf die Leistung der unnötigen Auflistungsenumeration machen, um die Anzahl zu berechnen.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch