【发布时间】:2014-06-16 22:09:45
【问题描述】:
我已经在桌子上敲了好几个小时,但似乎我太愚蠢了,无法在 C# 中实现树形结构。
- 有两种类型的节点,我称之为
Node和NodeCollection。 -
Node和NodeCollection都可以有一个父NodeCollection -
NodeCollection可以有一组子节点,它们可以是Node或NodeCollection -
Node不能有任何孩子。 - 没有父节点的
Node或NodeCollection被认为是根节点 -
Node具有任意类型的值,使用泛型完成- 节点集合
- 节点集合
- 节点
- 节点
- 节点集合
- 节点
- 节点集合
- 节点
- 节点
- 节点集合
- 节点
- 节点集合
- 节点集合
是否有来自 BCL 的集合类型用于此目的?到目前为止我所拥有的:
public abstract class NodeBase {
protected NodeCollection Parent { get; set; }
}
public class Node<T> : NodeBase {
public string Key { get; set; }
public T Value { get; set; }
}
public class NodeCollection : NodeBase {
public ICollection<NodeBase> Children { get; set; }
}
这个解决方案“有效”,但我不能只是走下树,因为NodeBase 不提供任何儿童。我必须验证类型以确定子节点是否为NodeCollection,但如果不是,我无法正确转换Node,因为它可能是未知类型。
【问题讨论】:
-
您还没有提出问题,也没有展示您迄今为止所做的尝试,或者描述了您面临的问题。
-
@JonSkeet 我正在处理,目前正在编辑问题。
标签: c# .net oop collections