2013-01-05 180 views
1

我有,通過可選包括其自身的清單,喜歡的東西在樹結構中安排的一類:集合元素是否可以引用集合?

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

有什麼辦法元素可以調用它的父集合?像,

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

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

我想我可以寫,告訴類的地方是在樹(因此它的父項)通過遍歷樹,直到它發現自己的功能,但我希望有一個整潔的方式。

+0

如何你的數據結構來表示的樹?你能發佈相關的代碼嗎? –

+0

你想要達到什麼目的?當然,如果您將引用父對象傳遞給孩子,孩子可以調用它的方法。 – lahsrah

+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()); 
} 
+1

謝謝,這將是一種享受。 –

相關問題