101 votes

Ce qui ' la différence entre IEnumerable, IList et tableau, liste ?

Quelle est la différence entre et ?

Quelle est la différence entre et ?

Ceux-ci semblent avoir la même fonction.

109voto

itowlson Points 44174

IEnumerable fournit uniquement un minimum "itératif" fonctionnalité. Vous pouvez parcourir la séquence, mais c'est tout. Cela a des inconvénients, par exemple, il est très inefficace pour compter les éléments à l'aide de IEnumerable, ou pour obtenir le n-ième élément -- mais il a des avantages aussi, par exemple, un IEnumerable pourrait être une interminable séquence, à l'instar de la séquence de nombres premiers.

Tableau est une taille fixe de la collection avec un accès aléatoire (c'est à dire que vous pouvez l'indice d'y entrer).

La liste est une variable de la taille de la collection (par exemple, vous pouvez ajouter et supprimer des éléments) avec un accès aléatoire.

IList est une interface qui ne tient pas la fonctionnalité de la liste (le comte, d'ajouter, de supprimer, de l'indexeur d'accès) à l'abri de l'différentes classes de béton tels que la Liste, BindingList, ObservableCollection, etc.

18voto

Mark Simpson Points 10789

IEnumerable est une interface qui permet à l'itération à travers une collection d'objets (par exemple, via le mot-clé foreach).

Un tableau est une .NET intrinsèque. Il est titulaire d'éléments de même type, mais il est de taille fixe. Une fois que vous créez un tableau avec les x éléments, il ne peut pas augmenter ou diminuer.

IList définit l'interface pour une liste, et aussi implémente l'interface IEnumerable.

Liste implémente l'interface IList; il est un type concret de la liste.

La différence entre les deux .NET les Listes et les tableaux, c'est que les listes peuvent avoir des éléments ajoutés à eux, ils ont pousser à être assez grande pour contenir tous les éléments requis. La liste des magasins de cette façon interne dans un tableau et, lorsque la matrice n'est plus assez grande pour contenir tous les éléments, un nouveau tableau est créé et les éléments copiés partout.

IList & tableaux à la fois de mettre en œuvre IEnumerable. C'est la façon dont les interfaces de travail -- classes de mettre en œuvre le contrat et de se comporter d'une manière similaire et peuvent être traités de la même manière comme un résultat, vous savez que la classe implémente l'interface IEnumerable, vous n'avez pas besoin de savoir le comment ou le pourquoi). Je vous suggère de lire sur les interfaces et ainsi de suite.

9voto

jfclavette Points 1757

Sont des interfacesIEnumerable et IList. Sont des classes Array et List. Array implémente IEnumerable. Liste implémente IList qui étend IEnumerable.

Edit : comme itowlson mentionné dans un commentaire, Array implémente IList.

8voto

row1 Points 2754

Génération d’une collection IEnumerable est paresseuse. Exemple :

Dans la méthode quelque chose l’appel à GetTwoInts() en fait n’entraînera pas dans la méthode GetTwoInts en cours d’exécution puisque l’énumération n’est jamais parcourue.

2voto

Dmitri Nesteruk Points 7669

est une interface polyvalente qui est utilisée par de nombreuses classes, telles que , et afin de laisser quelqu'un d’itérer sur une collection. Fondamentalement, c’est ce qui pousse la `` déclaration.

est généralement vous exposer comment les variables de type aux utilisateurs finaux. Cette interface permet un accès aléatoire à la collection sous-jacente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X