集合元素可以引用该集合吗?

时间:2013-01-05 14:58:47

标签: c# collections element

我有一个安排在树结构中的类,可选择包括自己的列表,如:

class MyClass
{
    List<MyClass> MyClassList;
    ...
}

元素是否可以调用其父集合?像,

class MyClass
{
    List<MyClass> MyClassList;
    ...

    private void AddItemToParentCollection()
    {
        parent.MyClassList.Add(new MyClass());
    }
}

我想我可以通过遍历树直到它找到自己来编写一个函数来告诉一个类它在树中的位置(以及它的父级所在的位置),但我希望它有一个更简洁的方法。

1 个答案:

答案 0 :(得分:1)

class Node
{
    Node parent;
    List<Node> children = new List<Node>();

    public void Add(Node child)
    {
        if (child.Parent != null)
            // throw exception or call child.Parent.Remove(child)

        children.Add(child);
        child.Parent = this;
    }

    public void Remove(Node child)
    {
        if (child.Parent != this)
           // throw exception

        children.Remove(child);
        child.Parent = null;
    }
}

使用这种结构,您可以将项目添加到父集合(不确定它应该是子节点的责任):

private void AddItemToParentCollection()
{
    if (Parent == null)
       // throw exception 

    Parent.Add(new Node());
}