Condividi tramite


CA1829: Utilizzare la proprietà Length/Count anziché il metodo Enumerable.Count

Proprietà valore
ID regola CA1829
Title Usare la proprietà Length/Count invece del metodo Enumerable.Count
Categoria Prestazioni
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Il Count metodo LINQ è stato usato in un tipo che supporta un equivalente, più efficiente Length o Count proprietà.

Descrizione regola

Questa regola contrassegna le chiamate al Count metodo LINQ su raccolte di tipi che dispongono di proprietà equivalenti, ma più efficienti Length o Count per recuperare gli stessi dati. Length o Count la proprietà non enumera la raccolta, pertanto è più efficiente.

Questa regola contrassegna le Count chiamate ai tipi di raccolta seguenti con Length la proprietà :

Questa regola contrassegna le Count chiamate ai tipi di raccolta seguenti con la Count proprietà :

I tipi di raccolta analizzati possono essere estesi in futuro per coprire più casi.

Come correggere le violazioni

Per correggere una violazione, sostituire la Count chiamata al metodo con l'uso dell'accesso alla Length proprietà o Count . Ad esempio, i due frammenti di codice seguenti mostrano una violazione della regola e come risolverli:

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

Suggerimento

Una correzione del codice è disponibile per questa regola in Visual Studio. Per usarlo, posizionare il cursore sulla violazione e premere CTRL+. (punto). Scegliere Usa proprietà Lunghezza/Conteggio invece di Count() quando disponibile nell'elenco delle opzioni presentate.

Code fix for CA1829 - Use Length/Count property instead of Count() when available

Quando eliminare gli avvisi

È possibile eliminare una violazione di questa regola se non si è interessati all'impatto sulle prestazioni dall'enumerazione raccolta non necessaria per calcolare il conteggio.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

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

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

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

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Vedi anche