CA1829 : Utilisez la propriété Length/Count au lieu de la méthode Enumerable.Count

Propriété Valeur
Identificateur de la règle CA1829
Titre Utilisez la propriété Length/Count au lieu de la méthode Enumerable.Count
Catégorie Performance
Le correctif a un effet disruptif ou non disruptif Sans rupture
Activé par défaut dans .NET 10 À titre de suggestion
Langues applicables C# et Visual Basic

Cause

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

Description de la règle

Cette règle signale les appels de méthode LINQ Count sur des collections de types qui ont des propriétés Length ou Count équivalentes, mais plus efficaces pour extraire les mêmes données. Une propriété Length ou Count n’énumère pas la collection, et est donc plus efficace.

Cette règle signale les appels de Count sur les types de collection suivants avec la propriété Length :

Cette règle signale les appels Count sur les types de collection suivants possédant la propriété Count.

Les types 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 Count à l’aide de l’accès à la propriété Length ou Count. Par exemple, les deux extraits de code suivants montrent une violation de la règle et comment la corriger :

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

class C
{
    public int GetCount(int[] array)
        => array.Count();

    public int GetCount(ICollection<int> collection)
        => collection.Count();
}
using System.Collections.Generic;

class C
{
    public int GetCount(int[] array)
        => array.Length;

    public int GetCount(ICollection<int> collection)
        => collection.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 la propriété Length/Count à la place de Count() si elle est disponible dans la liste des options présentées.

Correctif de code pour CA1829 : Utiliser la propriété Length/Count à la place de Count() si elle est disponible

Quand supprimer les avertissements

Vous pouvez sans risque ignorer une violation de cette règle si l'impact sur les performances dû à l'énumération inutile de la collection pour calculer le nombre ne vous préoccupe pas.

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

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.CA1829.severity = none

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

Voir aussi