在 C# 中克隆列表 [重复]

Posted

技术标签:

【中文标题】在 C# 中克隆列表 [重复]【英文标题】:cloning a list in C# [duplicate] 【发布时间】:2011-05-06 09:11:18 【问题描述】:

可能重复:How do I clone a generic list in C#?

嘿,我一直在尝试克隆一个列表,到目前为止我找到了这个函数 addRange 但我很确定它不会克隆列表中的对象而是做列表的浅拷贝我想知道如何克隆列表 提前致谢。

【问题讨论】:

见***.com/questions/222598/… 【参考方案1】:

您需要解析列表并为每个项目创建一个新对象,然后新项目将其添加到新列表中。

【讨论】:

【参考方案2】:

要克隆列表,必须克隆每个单独的项目。如果项目类存在一个有用的 Clone() 实现,这是使用 LINQ 的单线:

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

【讨论】:

【参考方案3】:

AddRange,更一般地说,对列表中包含的对象的所有操作只会克隆对这些对象的引用。要克隆对象本身,您应该在对象级别本身处理副本。

“克隆列表”是什么意思?克隆对象?您可以在每个对象上显式实现它(例如通过实现 ICloneable 接口),或者使用反射进行一般实现。

查找“ICloneable”、“深度克隆”或“深度复制”,详细了解获得预期结果的不同方法。

【讨论】:

以上是关于在 C# 中克隆列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C#克隆静态类[重复]

从 C# 克隆 Mercurial 存储库?

如何在 roblox 中删除所有克隆的 gui

如何在 C# 中克隆 DateTime 对象?

c# 克隆一个堆栈

如何在 C# 9 中复制/克隆记录?