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 Length
proprietà , Count
o IsEmpty
.
Descrizione regola
Per determinare se un tipo di raccolta include elementi, è più efficiente e più chiaro usare le Length
proprietà , Count
o 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à , Count
o 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.