我尝试使用TreeNodes在代码中创建树状结构。我根本不熟悉TreeNodes。我事先做了一些搜索,但我仍然不觉得我完全理解我在做什么。
我正在使用C#在Unity中创建游戏。我使用XML来创建对话,我希望在树状结构中存储来自不同选项的不同选项。
这种形象的直观表现如下:
-------------------------------选择一个-------------- -------------选择b --------------------------------
/--------|--------\ /--------|--------\
choice d choice e choice f choice g choice h choice i
等等。
public class TreeNode<T> : IEnumerable<TreeNode<T>>
{
public T Data {get; set;}
public TreeNode<T> Parent { get; set; }
public ICollection<TreeNode<T>> Children {get; set;}
public TreeNode(T data) {
this.Data = data;
this.Children = new LinkedList<TreeNode<T>>();
}
public TreeNode<T> AddChild(T child) {
TreeNode<T> childNode = new TreeNode<T>(child) {Parent = this};
this.Children.Add (childNode);
return childNode;
}
}
目前我收到错误TreeNode<T>' does not implement interface member
System.Collections.Generic.IEnumerable&gt; .GetEnumerator()&#39;。
我不完全确定该错误甚至意味着什么,我们将不胜感激。
我第一次在StackOverFlow中提出一个问题,所以如果这是错误的地方,请告诉我。
由于
答案 0 :(得分:0)
问题在于您声明TreeNode<T>
(将)实施IEnumerable<TreeNode<T>>
。为了正确实现该接口,该类需要实现接口公开的所有方法。
public class TreeNode<T> : IEnumerable<TreeNode<T>>
删除: IEnumerable<TreeNode<T>>
并正确编译。除非您想要实现该接口,否则您需要添加所有IEnumerable方法的实现。
答案 1 :(得分:0)
您可以尝试删除继承的: IEnumerable<TreeNode<T>>
,也可以执行System.Collections.IEnumerable.GetEnumerator()
方法。
请参阅this主题以获取有关错误的额外读数,并可能进一步了解。
引 “您没有实现System.Collections.IEnumerable.GetEnumerator。 当您实现通用IEnumerable时,您还必须实现System.Collections.IEnumerable的GetEnumerator。“