2010-11-07 79 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”,“深度克隆”或“深层复制”以了解更多关于获得预期结果的不同方法。