Partilhar via


CA1860: Evite usar o método de extensão 'Enumerable.Any()'

Property valor
ID da regra CA1860
Título Evite usar o método de extensão 'Enumerable.Any()'
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como sugestão

Motivo

Enumerable.Any é chamado em um tipo que tem um Length, Countou IsEmpty propriedade.

Descrição da regra

Para determinar se um tipo de coleção tem algum elemento, é mais eficiente e claro usar as Lengthpropriedades , Countou IsEmpty (se possível) do que chamar o Enumerable.Any método.

Any(), que é um método de extensão, usa consulta integrada de linguagem (LINQ). É mais eficiente confiar nas propriedades próprias da coleção, e também esclarece a intenção.

Nota

Esta regra é semelhante à CA1827: Não use Count()/LongCount() quando Any() puder ser usado. No entanto, essa regra se aplica ao método Linq Count() , enquanto esta regra sugere o uso da Count propriedade.

Como corrigir violações

Substitua uma chamada para Any() por uma chamada para a propriedade , LengthCountou IsEmpty da coleção.

Exemplo

O trecho de código a seguir mostra uma violação de CA1860:

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

O trecho de código a seguir corrige a violação:

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

Quando suprimir avisos

É seguro suprimir esse aviso se o desempenho não for uma preocupação.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar a regra.

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

Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

Para obter mais informações, consulte Como suprimir avisos de análise de código.