Différence entre ienumerable et ienumerator

Différence entre ienumerable et ienumerator

Avant de sauter dans la différence entre IEnumerable et Ienumerator, comprenons d'abord les termes énumérateur et énumérable et quand et pourquoi les utiliser.

Énumérable est un module utilisé dans la classe de tableau qui vous donne un énumérateur. La classe elle-même n'est pas chaque méthode. En fait, il utilise une méthode appelée «Genenumerator» qui vous donne un énumérateur pour récupérer son élément.

Un énumérateur est un objet qui renvoie chaque élément dans une collection dans un ordre spécifique, exactement comme on leur demande. Le compilateur génère du code qui utilise un énumérateur, lorsque vous écrivez une boucle foreach en C #.

IEnumerator est une interface implémentée par un énumérateur et la classe énumérable implémente l'interface ienumerable.

Qu'est-ce que c'est plus que?

IEnumerable est une interface de base utilisée pour obtenir un objet qui sait énumérer (ou itérater) sur les éléments de la collection.

Il s'agit d'une mise en œuvre du modèle itérateur qui fournit un mécanisme pour traverser un objet dans la collection quelle que soit sa structure interne. L'interface ienumable représente un objet qui peut être itéré dans une collection.

Il n'utilise qu'une seule méthode «Genenumerator» qui renvoie une instance de classe Enumerator qui implémente l'interface IEnumerator.

Qu'est-ce que l'iénumerateur?

L'interface ienumerator, l'une de l'autre main, déclare deux méthodes - reset () et movnext () - et une propriété, courant. Le MOVENEXT () renvoie un Vale booléen qui indique la fin de la liste et aide à positionner le premier élément de la liste après avoir appelé la méthode Reset () - il a défini l'énumérateur sur sa position par défaut afin de réitérer la liste de la liste de la début.

La propriété actuelle ne peut être appelée que via une instance de l'interface IEnumerator et il renvoie l'élément actuel dans la liste.

Différence entre ienumerable et ienumerator

Bases d'Ienumerable et d'Ienumerator

IEnumerable et Ienumerator sont tous deux des interfaces qui implémentent le modèle de conception du logiciel Iterator dans le .Cadre net ensemble. Le .Net Framework fait l'accès à des éléments individuels dans la collection personnalisée tout en mettant en œuvre des interfaces IEnumerables et Ienumerator. L'interface IEnumerable déclare une seule méthode appelée Genenumerator qui renvoie un autre type d'interface appelé l'interface IEnumerator pour cette collection particulière. IEnumerator, en revanche, est l'interface de base pour tous les énumérateurs non génériques qui sont utilisés pour lire les données de la collection. Cependant, les énumérateurs ne peuvent pas être utilisés pour modifier la collection sous-jacente.

Méthodes

L'interface IEnumerable définit une seule méthode GetEnumerator () qui est une méthode d'instance utilisée sur plusieurs types de collecte différents. Il obtient un itérateur d'iEnumerator qui peut être utilisé pour itérer toutes les valeurs de la collection. Lorsque vous écrivez une boucle foreach en C #, le code qu'il génère appelle la méthode Genenumerator pour créer l'énumérateur utilisé par la boucle.

IEnumerator, en revanche, utilise deux méthodes movnext () et reset () et un courant de propriété. La méthode movnext () amène l'énumérateur à l'élément suivant de la collection, tandis que la méthode Reset () définit l'énumérateur à sa position par défaut qui est avant le premier élément de la collection.

Mise en œuvre

IEnumerable est une interface générique qui fournit une abstraction pour la boucle sur les éléments et en implémentant l'interface IEnumerable, une classe générique permet essentiellement l'itération via l'interface IEnumerator. Ce faisant, ces classes finissent par fournir une interface commune pour récupérer une instance d'un objet ienumerator qui prend en charge tout l'ensemble de base des méthodes de navigation.

IEnumerator est l'interface de base pour les énumérateurs et l'utilisation de l'interface IEnumerable nécessite que la classe doit implémenter l'iEnumerator. Les deux interfaces doivent être implémentées, si vous souhaitez fournir un support pour ForEach. La classe abstraite «AbstractEnumerator» implémente l'interface IEnumerator.

Fonctionnalité d'Ienumerable et d'Ienumerator

L'interface IEnumerable, ainsi que l'interface de prise en charge de l'iEnumerator, vous permet d'itérer les éléments de la pile à l'aide de la déclaration 'Foreach'. C'est l'interface de base utilisée pour les objets de type collection. L'itération commence par l'élément supérieur de la pile et se termine par l'élément le plus ancien de la pile. Autrement dit, il représente un objet qui peut être énuméré.

Avec l'interface d'iEnumerator, ils permettent aux éléments de l'arrayList d'être itérés de manière standardisée et séquentielle, à commencer par le premier élément et à aller de l'avant. La déclaration foreach utilise les méthodes et les propriétés de l'interface IEnumerator pour itérer tous les éléments d'une collection.

Ienuable vs. IEnumerator: Tableau de comparaison

Résumé des versets ienumables ienumerator

En un mot, Ienumerable et Ienumerator sont des interfaces utilisées pour énumérer ou itérer une classe qui a une nature de collection, ce qui signifie qu'ils facilitent l'accès itératif dans une collection personnalisée. IEnumerable est l'interface générique disponible pour les objets de type collection et en implémentant l'interface ienumerable, une classe générique permet essentiellement l'itération via l'interface IEnumerator. Il n'utilise qu'une seule méthode Genenumerator qui renvoie une instance de classe d'énumérateur qui implémente l'interface IEnumerator. L'interface IEnumerator est censée être utilisée comme accessoires et il ne peut pas être utilisé pour modifier la collection sous-jacente. Il fournit deux méthodes abstraites reset () et movnext (), et un actuel de propriété pour appeler un élément particulier d'une collection.