Partilhar via


CA1829: Use a propriedade Length/Count em vez do método Enumerable.Count

Propriedade valor
ID da regra CA1829
Título Utilize-se a propriedade Length/Count em vez do método Enumerable.Count
Categoria Desempenho
A correção causa interrupção ou não Ininterrupto
Habilitado por padrão no .NET 10 Como sugestão
Línguas aplicáveis C# e Visual Basic

Motivo

O Count método LINQ foi usado num tipo que suporta um Length ou Count propriedade equivalente e mais eficiente, respectivamente.

Descrição da regra

Esta regra sinaliza as chamadas de método Count LINQ em coleções de tipos que têm uma Length ou Count propriedade equivalente, mas mais eficiente, para obter os mesmos dados. Length ou Count propriedade não enumera a coleção, portanto, é mais eficiente.

Esta regra sinaliza chamadas nos seguintes tipos de coleção Count que têm a propriedade Length:

Esta regra sinaliza chamadas nos seguintes tipos de coleções com a propriedade Count.

Os tipos de coleta analisados podem ser estendidos no futuro para abranger mais casos.

Como corrigir violações

Para corrigir uma violação, substitua a chamada de método Count pelo uso do acesso às propriedades Length ou Count. Por exemplo, os dois trechos de código a seguir mostram uma violação da regra e como corrigi-la:

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

Gorjeta

Uma correção de código está disponível para essa regra no Visual Studio. Para utilizá-lo, posicione o cursor sobre a violação e pressione Ctrl+. Escolha Usar propriedade Length/Count em vez de Count() quando disponível na lista de opções apresentada.

Correção de código para CA1829 - Use a propriedade Length/Count em vez de Count() quando disponível

Quando suprimir avisos

É seguro suprimir uma violação desta regra se não estiver preocupado com o impacto no desempenho resultante da enumeração desnecessária da coleção para calcular a contagem.

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

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

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

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

Consulte também