CA1860 : Éviter d’utiliser la méthode d’extension 'Enumerable.Any()'

Propriété Valeur
Identificateur de la règle CA1860
Titre Éviter d’utiliser la méthode d’extension 'Enumerable.Any()'
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

Enumerable.Any est appelé sur un type qui a Length, Count ou IsEmptypropriété.

Description de la règle

Pour déterminer si un type de collection a des éléments, il est plus efficace et plus clair d’utiliser les propriétés Length, Countou IsEmpty (si possible) que d’appeler la méthode Enumerable.Any.

Any(), qui est une méthode d’extension, utilise la requête intégrée au langage (LINQ). Il est plus efficace de s'appuyer sur les propriétés intrinsèques de la collection, ce qui clarifie aussi l'intention.

Note

Cette règle est similaire à CA1827 : N’utilisez pas Count()/LongCount() quand Any() peut être utilisé. Toutefois, cette règle s’applique à la méthode Count()Linq, tandis qu’elle suggère d’utiliser la Countpropriété.

Comment corriger les violations

Remplacez un appel à Any() par un appel à la propriété de la collection Length, Count ou IsEmpty.

Exemple

L’extrait de code suivant montre une violation de CA1860 :

bool HasElements(string[] strings)
{
    return strings.Any();
}
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

L’extrait de code suivant corrige la violation :

bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

Quand supprimer les avertissements

Vous pouvez supprimer cet avertissement sans risque, si les performances ne sont pas un problème.

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

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

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