【发布时间】:2011-05-06 09:11:18
【问题描述】:
嘿,我一直在尝试克隆一个列表,到目前为止我找到了这个函数 addRange 但我很确定它不会克隆列表中的对象而是做列表的浅拷贝我想知道如何克隆列表 提前致谢。
【问题讨论】:
嘿,我一直在尝试克隆一个列表,到目前为止我找到了这个函数 addRange 但我很确定它不会克隆列表中的对象而是做列表的浅拷贝我想知道如何克隆列表 提前致谢。
【问题讨论】:
您需要解析列表并为每个项目创建一个新对象,然后新项目将其添加到新列表中。
【讨论】:
要克隆列表,必须克隆每个单独的项目。如果项目类存在一个有用的 Clone() 实现,这是使用 LINQ 的单线:
List<MyType> lstCloned = lstOriginal.Select(i => i.Clone()).ToList();
【讨论】:
AddRange,更一般地说,对列表中包含的对象的所有操作只会克隆对这些对象的引用。要克隆对象本身,您应该在对象级别本身处理副本。
“克隆列表”是什么意思?克隆对象?您可以在每个对象上显式实现它(例如通过实现 ICloneable 接口),或者使用反射进行一般实现。
查找“ICloneable”、“深度克隆”或“深度复制”,详细了解获得预期结果的不同方法。
【讨论】: