CA1826: Usar la propiedad en lugar del método Linq Enumerable

Propiedad Value
Identificador de la regla CA1826
Título Usar la propiedad en lugar del método Linq Enumerable
Categoría Rendimiento
La corrección es problemática o no problemática Poco problemático
Habilitado de forma predeterminada en .NET 8 Como sugerencia

Causa

El método Enumerable de LINQ se ha usado en un tipo que admite una propiedad equivalente y más eficaz.

Descripción de la regla

Esta regla marca las llamadas al método LINQ Enumerable en colecciones de tipos que tienen propiedades equivalentes pero más eficientes para capturar los mismos datos.

Esta regla analiza los tipos de colección que implementan IReadOnlyList<T>, pero no IList<T>.

Esta regla marca las llamadas a los siguientes métodos en estos tipos de colección:

Los tipos y métodos de colección analizados pueden ampliarse en el futuro para cubrir más casos.

Cómo corregir infracciones

Para corregir una infracción, sustituya la llamada de método Enumerable por acceso de propiedad. Por ejemplo, en los dos fragmentos de código siguientes se muestra una infracción de la regla y cómo corregirla:

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

Sugerencia

Hay disponible una corrección de código para esta regla en Visual Studio. Para usarla, coloque el cursor sobre la infracción y presione Ctrl+. (punto). Elija Usar el indizador en la lista de opciones que se presentan.

Code fix for CA1826 - Use indexer

Cuándo suprimir las advertencias

Se puede suprimir una infracción de esta regla si no le preocupa el impacto en el rendimiento de las llamadas de método Enumerable específicas.

Supresión de una advertencia

Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.

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

Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none del archivo de configuración.

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

Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.

Configuración del código para analizar

Use la opción siguiente para configurar en qué partes del código base ejecutar esta regla.

Exclusión de los métodos FirstOrDefault y LastOrDefault

Puede configurar esta regla para excluir los métodos Enumerable.FirstOrDefault y Enumerable.LastOrDefault del análisis. Puede considerar la posibilidad de excluir estos métodos si la legibilidad es un problema, ya que el código que escribiría para reemplazarlos no es fácil de leer. Para excluir estos métodos, agregue el siguiente par clave-valor a un archivo .editorconfig en el proyecto:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Vea también