【问题标题】:How to copy List in C#如何在 C# 中复制列表
【发布时间】:2013-02-26 03:55:57
【问题描述】:

我想复制一个对象列表,但我不断获取对象之间的引用。

List<MyClass> copy = original;

当我更改副本列表中的值时,原始列表最终也会被修改。 有办法解决吗?

【问题讨论】:

标签: c# asp.net code-behind


【解决方案1】:

你可以这样做:

List<MyClass> copy = original.ToList();

这将创建列表的逐个元素副本,而不是复制对列表本身的引用。

【讨论】:

  • @ricojohari 您能否更具体地说明“不工作”部分?
  • 当我更改副本列表的值时,原始列表也被修改了
  • @ricojohari 对 - 这是因为副本是浅的。如果您在原始文件中添加或删除项目,则副本不会“看到”该更改。但是,更改列表中的可变对象也会反映在副本中。
  • 即使拷贝列表被修改,深拷贝是否会保持原始列表中的值?
  • @ricojohari 是的。如果你想要一个深拷贝,使用List&lt;MyClass&gt; copy = original.Select(v =&gt; new MyClass(v)).ToList();(假设MyClass有一个“拷贝构造函数”,它接受同一个类的一个实例并返回一个对象的“深拷贝”)。
猜你喜欢
  • 2019-01-06
  • 1970-01-01
  • 2016-02-28
  • 2020-11-04
  • 2010-12-20
  • 1970-01-01
  • 2013-12-27
  • 2010-11-13
  • 1970-01-01
相关资源
最近更新 更多