2010-10-28 14 views

Respuesta

10

La interfaz de IEnumerator, cuando es implementada por una clase, permite que se itere mediante el uso de la sintaxis foreach incorporada.

En la clase que debe iterarse para la interfaz IEnumerator se define una firma de método para la función GetEnumerator que controla el bucleo del objeto.

public IEnumerator<OrderLine> GetEnumerator() 
    { 
     for (int i=0;i<maxItems;i++) 
     { 
      yield return item[i]; 
     } 
    } 

Como se puede ver en este ejemplo, el dió declaración le permite devolver el control a la persona que llama sin perder su lugar en la enumeración. El control pasará a la línea después de la declaración de rendimiento cuando la persona que llama llega al siguiente incremento del ciclo foreach.

+0

por lo general uno quiere la comparación estricta: 'for (int i = 0; i Vlad

+0

Ooops. Tengo demasiada prisa. Fijo. – JohnFx

+0

No es que IEnumerator sea también la interfaz base utilizada por los métodos de extensión definidos en Linq – David

1

Raramente utiliza IEnumerator explícitamente, pero hay muchos métodos de extensión que funcionan con él, así como el foreach. Todas las colecciones lo implementan, y es un ejemplo del patrón iterador.

1

Es simplemente una interfaz que permite a los objetos realizar operaciones para iterar fácilmente sobre colecciones. Puede usarlo para crear objetos que iteren sobre una colección personalizada con una construcción foreach o una sintaxis similar.

Cuestiones relacionadas