假设我有一个 Node 类,如下所示:
class Node<T>
{
T data;
List<Node<T>> children;
internal Node(T data)
{
this.data = data;
}
List<Node<T>> Children
{
get
{
if (children == null)
children = new List<Node<T>>(1);
return children;
}
}
internal IEnumerable<Node<T>> GetChildren()
{
return children;
}
internal bool HasChildren
{
get
{
return children != null;
}
}
internal T Data
{
get
{
return data;
}
}
internal void AddChild(Node<T> child)
{
this.Children.Add(child);
}
internal void AddChild(T child)
{
this.Children.Add(new Node<T>(child));
}
}
问题在于树的每个节点都被限制为单一类型。然而,有些情况下根节点是一种类型,它有另一种类型的 child ,而另一种类型有第三种类型的 child (示例文档-->段落-->行-->词)。
您如何为这种情况定义通用树?
最佳答案
如果你想要一个严格的类型层次结构,你可以像这样声明它们:
class Node<T, TChild> {...}
Node<Document, Node<Paragraph, Node<Line, Word>>>
我并没有声称它会很漂亮。 :)
关于c# - 如何使用泛型编写真正通用的树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1769886/