2010-11-07 83 views
1

可能重複:
How do I clone a generic list in C#?克隆在C#中的列表

嘿,我一直在試圖克隆一個列表,到目前爲止,我發現功能 的AddRange但我敢肯定它不克隆列表中的對象,但做一個列表的淺表副本我想知道如何克隆列表 在此先感謝。

+0

請參閱http://stackoverflow.com/questions/222598/how-do-i-clone-a-generic-list-in-c – AdamSane 2010-11-07 19:43:01

回答

7

要克隆一個列表,每個單獨的項目都必須克隆。提供克隆()的一個有用的執行該項目類存在,這是使用LINQ一個班輪:

List<MyType> lstCloned = lstOriginal.Select(i => i.Clone()).ToList(); 
0

您需要解析列表併爲每個項目創建一個新對象,然後將新項目添加到新列表中。

3

的AddRange,更一般包含在列表只對這些對象的克隆對象引用的所有操作。要自己克隆對象,您應該在對象級本身處理該副本。

「克隆列表」是什麼意思?克隆對象?你可以在每個對象上明確地實現它(例如通過實現ICloneable接口),或者使用Reflection來實現一個通用的實現。

尋找「ICloneable」,「深度克隆」或「深層複製」以瞭解更多關於獲得預期結果的不同方法。