【发布时间】:2019-04-21 05:28:51
【问题描述】:
我有一个 C# 类来定义层次结构(比下面的示例复杂得多)。该类具有同一类的Parent 和可能的Children。
我正在尝试为顶级对象编写一个迭代器,它允许我访问 foreach 循环中的所有内容。
class Node
{
public Node Parent { get; private set; }
public bool HasParent { get { return (Parent != null); } }
public string Name { get; private set; }
public bool IsAnimal { get; set; }
public bool IsCar { get; set; }
public List<Node> Children { get; private set; }
public bool HasChildren { get { return (Children != null); } }
}
想这样访问:
foreach (Node myNode in TopNode.Contents)
最好有多个迭代器来遍历不同类型的Children,比如:
foreach (Node myNode in TopNode.Animals)
或
foreach (Node myNode in TopNode.Cars)
【问题讨论】:
-
您是否考虑过使用不同的类型来表示汽车和动物?它们可以从代表树结构的通用抽象基类继承。
-
有了给定的详细程度,一个简单的
enum NodeType { Animal, Car }将与继承一样好。即使你想要AnimalCar。
标签: c# tree iterator hierarchy ienumerator