Los “enumeradores”

Un enumerador es una estructura auxiliar que permite recorrer las estructuras dinámicas de forma secuencial.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections; 

namespace TablaHash
{
    class Program
    {
        static void Main(string[] args)
        {
              // Creamos e insertamos datos 
             Hashtable miDiccio = new Hashtable(); 
             miDiccio.Add("byte", "8 bits"); 
             miDiccio.Add("pc", "personal computer"); 
             miDiccio.Add("kilobyte", "1024 bytes"); 
 
             // Mostramos todos los datos 
             Console.WriteLine("Contenido:"); 
             IDictionaryEnumerator miEnumerador = miDiccio.GetEnumerator(); 
             while ( miEnumerador.MoveNext() ) 
                Console.WriteLine("{0} = {1}", miEnumerador.Key, miEnumerador.Value); 
             
        } 
    }
}

MoveNext, intenta moverse al siguiente elemento y devuelve “false” si no lo consigue. En el caso de las tablas hash, que tiene dos campos (clave y valor), el enumerador a usar será un “enumerador de diccionario” IDictionaryEnumerator), que contiene los campos Key y Value.

Para las colecciones “normales”, como las pilas y las colas, el tipo de Enumerador a usar será un IEnumerator, con un campo Current para saber el valor actual:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections; 

namespace TablaHash
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack miPila = new Stack();
            miPila.Push("Hola,");
            miPila.Push("soy");
            miPila.Push("yo");

            // Mostramos todos los datos 
            Console.WriteLine("Contenido:");
            IEnumerator miEnumerador = miPila.GetEnumerator();
            while (miEnumerador.MoveNext())
                Console.WriteLine("{0}", miEnumerador.Current);    
        } 
    }
}