2013-05-09 38 views
0

我希望新的關鍵字,不僅會創建一個新的對象,但也有獨特的內存引用。如果我這樣做,清除「tinyList」後,bigList也會被清除。全副本小列表到容器列表,不僅參考

bigList.Add(new bigListObject(tinyList)); 

bigList是列表,Construcotr看起來像

public Foo(List<SmallClass> in) 
    { 
     _test = new List<SmallClass>(); 
     _test = in; 
    } 

這工作,但我怎麼能清除tinyList,填充它,並不斷增加bigList? 整個想法是有一個大的列表和一個小的添加..現在我有兩個不同類的列表,幾乎相同。 感謝

+0

哪些類列出您使用的是?它是[這一個?](http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx) – 2013-05-09 19:43:26

+0

你應該克隆/複製源列表中的對象。 – I4V 2013-05-09 19:44:29

+0

@RobertHarvey列表 bigList。並且myBigClass有一個如下所示的構造函數:public Foo(List in) { _test = new List (); _test = in; } – 2013-05-09 19:45:53

回答

3

您可以將引用複製到一個新的列表:

public Foo(List<SmallClass> in) 
{ 
    _test = new List<SmallClass>(in); 
} 

現在_testin指向兩種不同的列表,所以從一個列表中刪除的對象不影響其他。

然而,它們是相同的參考文獻。因此,編輯列表in中的SmallClass實例之一將影響列表_test中的相應實例,因爲參考指向相同的實例。

如果需要SmallClass實例的副本,那麼你就需要實現複製方法(或object.MemberwiseClone使用)

+0

啊,這就是List構造函數可以用作的東西!好一個! :) – 2013-05-09 19:55:44

+0

完美!剛剛嘗試過。當時我正在尋找! – 2013-05-09 19:57:45

+0

對象不會被編輯,只有SmallClass(tinyList)的列表將被清除() – 2013-05-09 20:00:23