Compartilhar via


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

Property Valor
ID da regra CA1826
Título Usar a propriedade em vez do método Linq Enumerable
Categoria Desempenho
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Como sugestão

Causa

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

Descrição da regra

Essa regra sinaliza as chamadas do método LINQ Enumerable em coleções de tipos que têm propriedades equivalentes, mas mais eficientes, para buscar os mesmos dados.

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

Esse sinalizador de regra chama os seguintes métodos nestes tipos de coleção:

Os tipos de coleção e métodos analisados podem ser estendidos no futuro, para abranger mais casos.

Como corrigir violações

Para corrigir uma violação, substitua a chamada do método Enumerable pelo acesso à propriedade. Por exemplo, os dois snippets 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);
    }
}

Dica

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

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

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar 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 em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

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

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

Configurar código para analisar

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

Excluir os métodos FirstOrDefault e LastOrDefault

Você pode configurar essa regra para excluir os métodos Enumerable.FirstOrDefault e Enumerable.LastOrDefault da análise. Considere a exclusão desses 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

Confira também