2014-03-28 153 views
0

我試圖創建一個函數,它將樹中的每個可見節點添加到節點數組中,然後將其返回。C#將可見節點添加到節點數組

這是我到目前爲止的代碼,但正在努力弄清楚如何添加它們。

注意:樹最多有8個節點。

private Node[] activeClients(AdvTree tree) 
    { 
     Node[] activeClients = new Node[8]; 

     foreach (Node client in tree.Nodes) 
     { 
      if (client.IsVisible) 
      { 
       //Add Visible Node to activeClients Node Array 
      } 
     } 

     return activeClients; 
    } 
+0

是否activeClients.Add(客戶端)不起作用? – RvdK

+0

沒有添加定義我檢查。 – user1954141

+0

等待,太早。在數組中,您使用索引來設置它。例如activeClients [0] =客戶端。最好使用列表並使用append將客戶端添加到它。所以你不必使用索引和範圍檢查。 – RvdK

回答

1

可能是這樣的:

var visibleNodes = tree.Nodes.Where(client=>client.IsVisible) 

,特別是如果你正在談論小數字(8元),而不是計算密集型功能,動態數組(或載體),如List<T>IEnumerable<T>是正確的選擇。

以這種方式,您的代碼在未來也會更好地擴展。

+0

如果你絕對需要一個數組,那麼你以後也可以添加'ToArray()':-) – Jcl

0

我真的想通了,我不需要一個節點陣列,但感謝幫助傢伙。

我用NodeCollection來代替它,它適用於我的需求。

private NodeCollection activeClients(AdvTree tree) 
    { 
     NodeCollection activeClients = new NodeCollection(); 

     foreach (Node client in tree.Nodes) 
     { 
      if (client.IsVisible) 
      { 
       //Add Visible Node to activeClients Node Array 
       activeClients.Add(client, eTreeAction.Code); 
      } 
     } 

     return activeClients; 
    }