实现IEnumerable<;T>;数据结构

本文关键字:数据结构 gt lt IEnumerable 实现 | 更新日期: 2023-09-27 18:24:09

我看到了以下实现二进制树的代码。为了方便foreach,实现了IEnumerable。这是让前臂工作最简单的方法吗?我不明白为什么需要两个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();
        }
}

实现IEnumerable<;T>;数据结构

一个返回IEnumerator<T>,另一个返回IEnumerator。这样,在.NET中引入泛型之前编写的遗留代码仍然可以使用此数据结构。