c# - 实现 IEnumerable<T> 数据结构

标签 c# data-structures ienumerable

我遇到了以下实现二叉树的代码。为了方便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();
        }
}

最佳答案

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

关于c# - 实现 IEnumerable<T> 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254262/

相关文章:

macos - C 数据结构还是核心基础?

c# - 将 IEnumerable<T> 转换为 IEnumerator<T> 有什么作用

C# Return Generic List/IEnumerable,它是如何工作的?

c# 预处理器指令作用域

c# - 三种 System.Drawing 方法显示绘图缓慢或闪烁 : Solutions? 或其他选项?

c# - 边界表示数据结构

java - 查找两个暗数组中给出的候选分数的最大分数或最大平均分数

c# - 无法将类型 System.Collections.Generic.IEnumerable<T> 隐式转换为 System.Collections.Generic.List<B>

c# - WPF NotifyIcon不触发MouseEnter事件(显示工具提示时如何更新NotifyIcon View 模型)

c# - 适用于 Windows 8 的图像编辑库