Я наткнулся на следующий код, который реализует двоичное дерево.Для облегчения foreach реализовано IEnumerable
.Это самый простой способ заставить foreach работать?Я не понимаю, зачем нужны две GetEnumerator()
функции.
public class BinaryTree<T> : IEnumerable<T>
{
..
public IEnumerator<T> InOrderTraversal()
{
...
yield return curr.Value;
...
}
public IEnumerator<T> GetEnumerator()
{
return InOrderTraversal();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}