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 9 | Como sugerencia |
El método Enumerable de LINQ se ha usado en un tipo que admite una propiedad equivalente y más eficaz.
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:
- System.Linq.Enumerable.Count
- System.Linq.Enumerable.First
- System.Linq.Enumerable.FirstOrDefault
- System.Linq.Enumerable.Last
- System.Linq.Enumerable.LastOrDefault
Los tipos y métodos de colección analizados pueden ampliarse en el futuro para cubrir más casos.
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.
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.
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.
Use la opción siguiente para configurar en qué partes del código base ejecutar esta regla.
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
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: