gpt4 book ai didi

c# - 为通用树 C#​​ 实现 IEnumerable

转载 作者:行者123 更新时间:2023-11-30 16:49:31 26 4
gpt4 key购买 nike

我有一个通用树类,我想为其实现 IEnumerable 接口(interface)。之前在stackoverflow上查到的问题跟我的问题有点不一样。我知道我在绞尽脑汁,但我不知道那是什么。这是我的代码:

class Node<T>: IEnumerable<T>
{
private T data;
private LinkedList<Node<T>> children;

public Node(T data)
{
this.data = data;
children = new LinkedList<Node<T>>();
}

public void AddChildNode(Node<T> node)
{
children.AddFirst(node);
}

public void MyTraverse(Node<T> node, List<T> visited)
{
visited.Add(node.data);
foreach (Node<T> kid in node.children)
MyTraverse(kid, visited);

}

public IEnumerator<T> GetEnumerator()
{
return children.GetEnumerator();
}


System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}

在函数 GetEnumerator() 中,我遇到了一个我不知道如何修复的转换错误。谁能帮帮我?

最佳答案

你可能想要 IEnumerable<Node<T>>接口(interface)实现(您正在枚举节点 Node<T> ,而不是 T 实例)而不仅仅是 IEnumerable<T>一:

 class Node<T>: IEnumerable<Node<T>> {
...
public IEnumerator<Node<T>> GetEnumerator() {
return children.GetEnumerator();
}

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}

关于c# - 为通用树 C#​​ 实现 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36593284/

26 4 0