1、使一個類“可枚舉”,允許它支持foreach結構
實現IEnumerable接口,并提供一個GetEnumerator方法來返回一個IEnumerator對象。如:
public class Tree<TItem>:IEnumerable<TItem>
{
...
IEnumerator<TItem> GetEnumerator()
{
...
}
}
2、在不用迭代器的前提下實現一個枚舉器
定義一個枚舉器類,它應該實現IEnumerator接口,并在接口中提供Current屬性和MoveNext(并可選擇提供Reset)方法。如:
public class TreeEnumerator<TItem>:IEnumerator<T>
{
...
TItem Current
{
get
{
...
}
}
bool MoveNext()
{
...
}
}
3、用迭代器來實現一個枚舉器
使用yield語句來實現枚舉器。yield指定了要返回的數據項以及以什么順序返回。如:
IEnumerator<TItem> GetEnumerator()
{
for(...)
yield return ...
}