Saltar al contenido

¿Cuál es la diferencia entre IEnumerator e IEnumerable?

Posteriormente a investigar en varios repositorios y páginas webs al terminar hemos dado con la respuesta que te compartimos a continuación.

Solución:

IEnumerable es una interfaz que define un método ObtenerEnumerador que devuelve un IEnumerador interfaz, esto a su vez permite el acceso de solo lectura a una colección. Una colección que implementa IEnumerable se puede usar con una instrucción foreach.

Definición

IEnumerable 

public IEnumerator GetEnumerator();

IEnumerator

public object Current;
public void Reset();
public bool MoveNext();

código de ejemplo de codebetter.com

Un IEnumerator es una cosa que se puede enumerar: tiene la Current propiedad y la MoveNext y Reset métodos (que en el código .NET probablemente no llamarás explícitamente, aunque podrías).

Un IEnumerable es algo que se puede enumerar… lo que simplemente significa que tiene un método GetEnumerator que devuelve un IEnumerator.

¿Cuál usas? La única razón para usar IEnumerator es si tiene algo que tiene una forma no estándar de enumeración (es decir, de devolver sus diversos elementos uno por uno), y necesita definir cómo funciona. Crearías una nueva clase implementando IEnumerator. Pero aún tendrías que devolver eso. IEnumerator en un IEnumerable clase.

Para ver qué es un enumerador (que implementa IEnumerator) parece, ver cualquier Enumerator clase, como las contenidas en List, Queue, o Stack. Para ver una clase que implementa IEnumerablevea cualquier clase de colección estándar.

Un Enumerator le muestra los elementos de una lista o colección. Cada instancia de un Enumerador está en una posición determinada (el primer elemento, el séptimo elemento, etc.) y puede darle ese elemento (IEnumerator.Current) o pasar al siguiente (IEnumerator.MoveNext). Cuando escribes un foreach bucle en C#, el compilador genera código que usa un enumerador.

Un Enumerable es una clase que te puede dar Enumerators. Tiene un método llamado GetEnumerator lo que te da un Enumerator que mira sus artículos. Cuando escribes un foreach loop en C#, el código que genera llama GetEnumerator para crear el Enumerator utilizado por el bucle.

valoraciones y reseñas

Recuerda algo, que puedes optar por la opción de agregar una reseña .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *