嘿,我一直试图克隆一个列表,到目前为止我找到了这个功能 addRange但我很确定它没有克隆列表中的对象但是做了列表的浅表副本我想知道如何克隆列表 提前谢谢。
答案 0 :(得分:8)
要克隆列表,必须克隆每个项目。如果存在项类的Clone()的有用实现,这是一个使用LINQ的单行程序:
List<MyType> lstCloned = lstOriginal.Select(i => i.Clone()).ToList();
答案 1 :(得分:3)
AddRange,更一般地说,对list中包含的对象的所有操作都只克隆对这些对象的引用。要自己克隆对象,您应该在对象级别处理副本。
“克隆列表”是什么意思?克隆对象?您可以在每个对象上显式实现它(例如,通过实现ICloneable接口),或使用Reflection进行一般实现。
寻找“ICloneable”,“深度克隆”或“深层复制”,以了解有关获得预期结果的不同方法的更多信息。
答案 2 :(得分:0)
您需要解析列表并为每个项目创建一个新对象,然后将新项目添加到新列表中。