如何在不更改原始列表的情况下更改新列表?

2024-04-15

我有一个列表,其中填充了操作中的一些数据,并将其存储在内存缓存中。现在我想要另一个列表,其中包含基于某些条件的列表中的一些子数据。

正如下面的代码所示,我正在对目标列表进行一些操作。问题是我对目标列表所做的任何更改也会对 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(使用前将#替换为@)

如何在不更改原始列表的情况下更改新列表? 的相关文章

随机推荐