最終更新:2008-08-11 (月) 22:43:36 (5708d)
イテレータ
Top / イテレータ
繰り返し処理
C♯ の foreach 構文は、コレクションクラスの利用者側から見ると非常に便利な機能です。 しかしながら、実装側から見た場合、IEnumerableやIEnumeratorインタフェースを実装する必要があり、結構面倒な作業が必要でした。
この実装側の労力を軽減するために、C# 2.0ではイテレータ構文というものが追加されました。 イテレータ構文は、コレクションクラスから要素を得る(yield: 産出する、利益を生む)ための構文で、以下のような書き方をします。
using System.Collections.Generic; public class Stack<T>: IEnumerable<T> { T[] items; int count; public void Push(T data) {...} public T Pop() {...} public IEnumerator<T> GetEnumerator() { for(int i = count - 1; i >= 0; --i) yield return items[i]; } } //呼び出し Stack<int> stack = new Stack<int>(); for (int i = 0; i < 10; i++) stack.Push(i); foreach (int i in stack) Console.Write("{0} ", i);