Partilhar via


CA1826: Use a propriedade em vez do método Linq Enumerable

Property valor
ID da regra CA1826
Título Use a propriedade em vez do método Linq Enumerable
Categoria Desempenho
A correção está quebrando ou não quebrando Sem quebra
Habilitado por padrão no .NET 8 Como sugestão

Motivo

O Enumerable método LINQ foi usado em um tipo que suporta uma propriedade equivalente e mais eficiente.

Descrição da regra

Esta regra sinaliza que o método LINQ chama coleções de tipos que Enumerable têm propriedades equivalentes, mas mais eficientes, para buscar os mesmos dados.

Esta regra analisa os tipos de coleção que implementam IReadOnlyList<T> , mas não IList<T>o .

Esta regra sinaliza chamadas para os seguintes métodos nesses tipos de coleção:

Os tipos e métodos 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 pelo acesso à Enumerable propriedade. Por exemplo, os dois trechos de código a seguir mostram uma violação da regra e como corrigi-la:

using System;
using System.Collections.Generic;
using System.Linq;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list.First());
        Console.Write(list.Last());
        Console.Write(list.Count());
    }
}
using System;
using System.Collections.Generic;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list[0]);
        Console.Write(list[list.Count - 1]);
        Console.Write(list.Count);
    }
}

Gorjeta

Uma correção de código está disponível para essa regra no Visual Studio. Para usá-lo, posicione o cursor sobre a violação e pressione Ctrl+. Escolha Usar indexador na lista de opções apresentada.

Code fix for CA1826 - Use indexer

Quando suprimir avisos

É seguro suprimir uma violação dessa regra se você não estiver preocupado com o impacto no desempenho de chamadas de método específicas Enumerable .

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

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

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

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

Configurar código para análise

Use a opção a seguir para configurar em quais partes da base de código executar essa regra.

Excluir os métodos FirstOrDefault e LastOrDefault

Você pode configurar essa regra para excluir os Enumerable.FirstOrDefault métodos e Enumerable.LastOrDefault da análise. Você pode considerar excluir esses métodos se a legibilidade for uma preocupação, já que o código que você escreveria para substituí-los não é facilmente legível. Para excluir esses métodos, adicione o seguinte par chave-valor a um arquivo .editorconfig em seu projeto:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Consulte também