2011-12-29 78 views
0

我將有一個'主列表'(最好是BindingList類型)。在另一個班級中,我有一個子列表,它由「主列表」的某些元素組成。類的每個實例都有不同的元素。有沒有辦法讓每個子列表與「主列表」保持同步?有沒有辦法讓子列表與主列表的內容保持同步?

+0

可以定義**同步是指這個**?你能給出一個主列表元素的例子,然後是子列表元素和你想保持同步的嗎? – 2011-12-29 14:27:35

+0

如在「主列表」中的對象發生更改時,包含該對象的任何子列表將更新更改 – joshua 2011-12-29 14:31:54

+3

如果它們不是值類型,則它們將更新更改。 .NET中的對象通過引用傳遞。你根本不應該擔心這個。一個對象可以屬於許多集合,只要它是相同的引用(並且它應該是如果你還沒有完成克隆),那麼該對象將被**「同步」**。 – 2011-12-29 14:45:31

回答

0

您可以通過擴展您的列表並添加您在更新「主」列表時同步的複合對象來創建所需的列表類型。

這裏是我如何在java中做到這一點,你可以在c#中做同樣的事情,但是我知道我不記得確切的語法。你可以隨心所欲地擴展你喜歡的任何列表類型。

public class MyList extends ArrayList { 
    private List<Object> someOtherList; 
    public MyList(){ 
     super(); 
    } 

    public void setSyncList(List<Object> list){ 
     someOtherList = list; 
    } 

    @Override 
    public boolean add(Object arg0) { 
     boolean b = super.add(arg0); 
     someOtherList.add(arg0); // here you can decide what action should be done to the syncList, it might not want to add all elements, same goes for the remove below 
     return b; 
    } 

    @Override 
    public boolean remove(Object arg0) { 
     boolean b = super.remove(arg0); 
     someOtherList.remove(arg0); 
     return b; 
    } 

} 
+0

你會如何納入多個子列表?以及修改arg0? – joshua 2011-12-29 14:39:33

+0

我會使someOtherList成列表的列表。然後,我會讓所有這些列表實現一個添加和刪除操作的界面,如果需要更多 – Marthin 2011-12-29 14:41:40

相關問題