Il semble clairement que je manque quelque chose de très connu et commun, mais je ne peux pas comprendre pourquoi vide .Any () invocation sur tableau et liste diffère dans le résultat.

Comme je le sais, lorsque j'appelle .Any (), cela revient sémantiquement à demander: "Cette boîte contient-elle des éléments?". Alors, quand j'écris quelque chose comme ça:

List<int> list= new List<int>();

WriteLine(list.Any());//returns false



list.Add(1);

WriteLine(list.Any());//returns true

Il retourne normalement faux dans le premier cas car la liste était vide et vraie lorsque l'élément a été ajouté.

Mais plus loin si j'essaierai d'utiliser un tableau à la place et que ce tableau sera juste initialisé mais vide (sans aucun élément). Tout appel () retournera true:

int[] arr = new int[2];

WriteLine(arr.Any());//returns true despite in has no items

Alors, quel est le point d'appeler empty .Any () sur un tableau pour vérifier s'il contient des éléments s'il retournera toujours true? Dois-je éviter d'utiliser .Any () dans un tel but?

Quel est le vrai cas d’utilisation de vide .Any sur un tableau?

1
Andy 17 janv. 2017 à 10:30

2 réponses

Meilleure réponse

D'après votre exemple de code, il n'y a pas de cas d'utilisation significatif pour la méthode Any () sur un tableau initialisé.

Mais, comme je l'ai mentionné dans le commentaire de votre question, si vous appelez une méthode qui renvoie un tableau, vous pouvez alors effectuer une vérification Any () sur le tableau retourné pour déterminer s'il contient des éléments.

0
Numan 17 janv. 2017 à 07:54

Lorsque vous créez un tableau, tous les éléments sont initialisés avec les valeurs par défaut. Donc, int[] arr = new int[2] est en fait égal à int[] arr = new int[2] { 0, 0 }. C'est pourquoi .Any() renvoie true.

2
Oleksandr Kobylianskyi 17 janv. 2017 à 07:42