Condividi tramite


CA1860: Evitare di usare il metodo di estensione 'Enumerable.Any()'

Proprietà valore
ID regola CA1860
Title Evitare di usare il metodo di estensione 'Enumerable.Any()'
Categoria Prestazioni
La correzione causa un'interruzione o meno Non causa un'interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Enumerable.Anyviene chiamato su un tipo con una Lengthproprietà , Counto IsEmpty .

Descrizione regola

Per determinare se un tipo di raccolta include elementi, è più efficiente e più chiaro usare le Lengthproprietà , Counto IsEmpty (se possibile) rispetto a chiamare il Enumerable.Any metodo .

Any(), che è un metodo di estensione, usa linQ (Language Integrated Query). È più efficiente basarsi sulle proprietà della raccolta e chiarisce anche l'intento.

Nota

Questa regola è simile a CA1827: non usare Count()/LongCount() quando è possibile usare Any(). Tuttavia, tale regola si applica al metodo Linq Count() , mentre questa regola suggerisce l'uso della Count proprietà .

Come correggere le violazioni

Sostituire una chiamata a Any() con una chiamata alla proprietà , Counto IsEmpty dell'insiemeLength.

Esempio

Il frammento di codice seguente mostra una violazione di CA1860:

bool HasElements(string[] strings)
{
    return strings.Any();
}
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

Il frammento di codice seguente corregge la violazione:

bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

Quando eliminare gli avvisi

Se le prestazioni non sono un problema, è possibile eliminare questo avviso.

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

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.CA1860.severity = none

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