CA1826 : Utiliser une propriété au lieu de la méthode Linq Enumerable

Propriété Value
Identificateur de la règle CA1826
Titre Utiliser une propriété au lieu de la méthode Linq Enumerable
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Comme suggestion

Cause

La méthode LINQ Enumerable a été utilisée sur un type qui prend en charge une propriété équivalente et plus efficace.

Description de la règle

Cette règle marque les appels de méthode LINQ Enumerable sur des collections de types qui ont des propriétés équivalentes mais plus efficaces pour extraire les mêmes données.

Cette règle analyse les types de collection qui implémentent IReadOnlyList<T>, mais pas IList<T>.

Cette règle marque les appels aux méthodes suivantes sur ces types de collections :

Les types et méthodes de collection analysés peuvent être étendus à l’avenir pour couvrir davantage de cas.

Comment corriger les violations

Pour corriger une violation, remplacez l’appel de méthode Enumerable par l’accès aux propriétés. Par exemple, les deux extraits de code suivants montrent une violation de la règle et comment la corriger :

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

Conseil

Un correctif de code est disponible pour cette règle dans Visual Studio. Pour l’utiliser, positionnez le curseur sur la violation et appuyez sur Ctrl+. (point). Choisissez Utiliser l’indexeur dans la liste des options présentée.

Code fix for CA1826 - Use indexer

Quand supprimer les avertissements

Vous pouvez supprimer une violation de cette règle en toute sécurité si vous ne vous souciez pas de l’impact des performances dû à des appels de méthode Enumerable spécifiques.

Supprimer un avertissement

Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.

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

Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none dans le fichier de configuration.

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

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Configurer le code à analyser

Utilisez l’option suivante pour configurer les parties de votre codebase sur lesquelles exécuter cette règle.

Exclure les méthodes FirstOrDefault et LastOrDefault

Vous pouvez configurer cette règle de manière à exclure les méthodes Enumerable.FirstOrDefault et Enumerable.LastOrDefault de l’analyse. Vous pouvez envisager d’exclure ces méthodes si la lisibilité est un problème, car le code que vous écrivez pour les remplacer n’est pas facilement lisible. Pour exclure ces méthodes, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Voir aussi