迭代器模式(Iterator)
迭代器模式(Iterator),提供一種方法依序存取一個聚合物件中各個元素,而又不暴露該物件的內部結構。
foreach in就是實現IEnumerator、IEnumerable這兩個介面來實踐迴圈走遍。
.NET的迭代器實現
實際使用當中是不需要這麼麻煩的,因為.NET框架已經為你準備好了相關介面,你只需去實現就好。
IEnumerator 介面
IEnumerator支援非泛型集合上的簡單反覆運算。
1
2
3
4
5
6
7
8
9
10
11
public interface IEnumerator {
//取得集合中當前的元素。
object Current { get; }
//將列舉值往前推至下集合中的下一個項目。
//如果列舉值成功前移至下一個項目,則為 true;如果列舉值超過集合的結尾,則為 false。
bool MoveNext();
//設定列舉值至它的初始位置,這是在集合中第一個項目之前。
void Reset();
}
IEnumerable 介面
IEnumerable公開列舉數,該列舉數支援在非泛型集合上進行簡單的迭代。
1
2
3
4
public interface IEnumerable {
//返迴一個迴圈存取集合的列舉值(傳回逐一查看集合的列舉值)
IEnumerator GetEnumerator();
}