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

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

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

【问题讨论】:

标签: c# list clone


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-02-13
        • 2012-04-01
        • 1970-01-01
        • 2018-08-28
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 2023-03-27
        • 2010-12-23
        相关资源
        最近更新 更多