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

Propriété Value
Identificateur de la règle CA1860
Titre Éviter d’utiliser la méthode d’extension 'Enumerable.Any()'
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Comme suggestion

Cause

Enumerable.Any est appelée sur un type qui a une LengthpropriétéCountIsEmpty, ou .

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 propres propriétés de la collection, et cela clarifie également l’intention.

Notes

Cette règle est similaire à CA1827 : N’utilisez pas Count()/LongCount() quand Any() peut être utilisé. Toutefois, cette règle s’applique à la Count()méthode Linq, tandis que cette règle 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.