【发布时间】:2021-11-12 02:01:16
【问题描述】:
当我将一些 A 类的对象添加到我的 List 中时,我意识到,每当该对象发生变化时,尽管它一次又一次地被 new,list 的内容也会发生变化,这可能是因为存在按引用传递,我知道这一点。如何避免以下情况的变化:
List<A> listA;
List<B> listB = SomeFuncReturnsListB();
A a = new A();
a.Attribute1 = listB;
listA.Add(new A(){Attribute1=a.Attribute1});
【问题讨论】:
-
你要什么?我很难理解。您是在问如何复制列表以便可以在不影响
listB的内容的情况下将项目添加到listA,还是在问深度克隆对象? -
@Llama 问题是关于如何在不改变其内容的情况下将对象添加到
listA。listA的内容在给出的示例代码中不断变化。我的意思是说“不断变化”,列表的所有元素都会转到最后添加的元素。我的意图是原因可能是对象a中的listB。 -
您的意思是 listA 和 listB 都包含相同的项目,即使您向 listA 添加新项目?我看不到 listB 是如何“在”对象 A 中的。
-
引用类型列表不存储实际对象,它存储对该对象的引用。因此,如果原始对象发生更改,列表中也会反映相同的更改。
标签: c# list collections