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
La correzione causa un'interruzione o meno Non rompente
Abilitato per impostazione predefinita in .NET 10 Come suggerimento
Linguaggi applicabili C# e Visual Basic

Causa

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

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 chiamate Count sui seguenti tipi di raccolta con la proprietà Length:

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 chiamata al metodo Count utilizzando l'accesso alla proprietà Length 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 l'opzione Usa la proprietà Lunghezza/Conteggio invece di Count() quando disponibile dall'elenco presentato.

Correzione del codice per CA1829 - Usare la proprietà Length/Count anziché Count() quando disponibile

Quando eliminare gli avvisi

È possibile ignorare una violazione di questa regola se non ci si preoccupa dell'impatto sulle prestazioni dovuto all'enumerazione inutile della raccolta per determinare 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