清除另一个列表后,引用列表会受到影响

时间:2018-12-22 21:40:22

标签: c# list reference

我创建了一个名为PartList的列表,一个名为CombinePartList“的方法创建并返回了该列表。在另一种方法中,我需要此方法的结果,但也需要清除列表{{1 }}。因此,我创建了另一个列表, 但是当我清除PartList时,第二个名为PartList的地址也会被清除。 我的问题是,为什么会这样?我该如何解决?

这是我的代码:

MPartList

2 个答案:

答案 0 :(得分:0)

您的代码片段无法确切说明问题所在,但我假设CombinePartListforView()返回对PartList的引用,因此使MpartList指向与PartList相同的实例。您可能不想更改列表实例本身,仅更改内容。

尝试

MpartList = new List<ModifiedPartList>(CombinePartListforView(bar, ViewNum));

或确保您在该方法中返回新实例。

答案 1 :(得分:0)

MpartList引用了PartList。因此,当您清除其中一个时,另一个将被清除。 (两者都引用相同的值

作为一种解决方案,我建议您使用for循环并像这样创建新对象来完全复制PartList:

Public List<ModifiedPartList> FullCopy(List<ModifiedPartList> PartList)
{
List<ModifiedPartList> NewList=new List<ModifiedPartList>();
for (int i=0;i<PartList.Count();i++)
{
    NewList.Add(CopyObject(PartList[i]));//Write this function
}
return NewList();
}