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 ...
}