我有一个列表,其中填充了操作中的一些数据,并将其存储在内存缓存中。现在我想要另一个列表,其中包含基于某些条件的列表中的一些子数据。
正如下面的代码所示,我正在对目标列表进行一些操作。问题是我对目标列表所做的任何更改也会对 mainList 进行。我认为这是因为参考是相同的或其他什么。
我所需要的只是目标列表上的操作不会影响主列表中的数据。
List<Item> target = mainList;
SomeOperationFunction(target);
void List<Item> SomeOperationFunction(List<Item> target)
{
target.removeat(3);
return target;
}
您需要在方法中克隆列表,因为List<T>
是一个类,因此它是引用类型并通过引用传递。
例如:
List<Item> SomeOperationFunction(List<Item> target)
{
List<Item> tmp = target.ToList();
tmp.RemoveAt(3);
return tmp;
}
Or
List<Item> SomeOperationFunction(List<Item> target)
{
List<Item> tmp = new List<Item>(target);
tmp.RemoveAt(3);
return tmp;
}
or
List<Item> SomeOperationFunction(List<Item> target)
{
List<Item> tmp = new List<Item>();
tmp.AddRange(target);
tmp.RemoveAt(3);
return tmp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)