2010-10-28 10 views

Odpowiedz

10

Interfejs IEnumerator, po zaimplementowaniu przez klasę, umożliwia iterację za pomocą wbudowanej składni foreach.

W klasie, która musi być iterowana dla interfejsu IEnumerator, definiuje sygnaturę metody dla funkcji GetEnumerator, która steruje zapętlaniem się obiektu.

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

Jak widać na tym przykładzie, uzyskując zestawienie pozwala zwrócić sterowanie do rozmówcy, nie tracąc swoje miejsce w wyliczeniu. Kontrola zostanie przekazana do linii po deklaracji zysku, gdy dzwoniący osiągnie kolejny przyrost pętli foreach.

+0

Zazwyczaj chce się ścisłego porównania: 'for (int i = 0; i Vlad

+0

Ooops. Zbyt szybko się spieszyłem. Naprawiony. – JohnFx

+0

Nie to, że IEumerator jest także podstawowym interfejsem używanym przez metody rozszerzeń zdefiniowane w Linq – David

1

Rzadko używasz IEnumerator jawnie, ale istnieje wiele metod rozszerzenia, które z nim współpracują, a także foreach. Wszystkie kolekcje ją implementują i jest to przykład wzorca Iteratora.

1

Jest to po prostu interfejs, który pozwala obiektom wykonywać operacje w celu łatwej iteracji po kolekcjach. Można go użyć do tworzenia obiektów, które są iterowane w niestandardowej kolekcji z konstrukcją foreach lub podobną składnią.

Powiązane problemy