J'ai discuté avec des collègues, et nous ne pouvions pas comprendre ce que l'utilisation est .Any
pour tout donné List<>
, en C #.
Vous pouvez vérifier la validité d'un élément du tableau comme ci-dessous:
if (MyList.Any()){ ...} //Returns true or false
Qui est exactement le même que
if (MyList.Count() != 0) { ... }
et est beaucoup plus commun, lisible et clair sur l'intention de la if
déclaration.
En fin de compte, nous étions coincés avec cette pensée:
.Any()
peut être utilisé, fonctionnera tout aussi bien, mais est moins clair sur l'intention du programmeur, et dans ce cas, il ne devrait pas être utilisé.
Mais nous pensons que cela ne peut pas être juste; nous devons manquer quelque chose.
Sommes nous?
Any()
est moins claire: Any()
me semble plus claire, surtout avec une condition lambda. Traduire le code en anglais dans ma tête if(MyList.Count(o => o > 10) > 0)
devient "Le nombre d'éléments supérieur à 10 est-il supérieur à 0?" alors que if(MyList.Any(o => o > 10))
devient "Y a-t-il des objets supérieurs à 10?"
Any
est Exists
. Le nom Linq est probablement plus inspiré de Haskell et Python, qui ont également toutes les fonctions.