我创建了一个名为PartList
的列表,一个名为CombinePartList
“的方法创建并返回了该列表。在另一种方法中,我需要此方法的结果,但也需要清除列表{{1 }}。因此,我创建了另一个列表,
但是当我清除PartList
时,第二个名为PartList
的地址也会被清除。
我的问题是,为什么会这样?我该如何解决?
这是我的代码:
MPartList
答案 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();
}