当您执行TMPElementsX = TMPElements;
,你居然分配的参考。
这意味着,两个变量TMPElements
,并在同一对象TMPElementsX
点。使用任何这些变量移除对象都会影响此对象。
如果你想要它是不同的和独立的List
s具有相同的值,那么你可以克隆你的List
。
如果您拥有List
的值类型(如int
,double
等),会更容易。这将是这样:
List<int> TMPElementsX = new List<int>();
TMPElementsX = new List<int>(TMPElements); // new list created
ResultsElements.Add(TMPElementsX);
int ee = element;
TMPElements.Remove(ee);
然而,在引用类型的情况下拷贝构造函数创建新列表与相同引用的项目。您需要制作一个List的深层副本。你可以阅读在StackOverflow上的一些文章来学习如何做一个深层副本:
How do I clone a generic list in C#?
Generic method to create deep copy of all elements in a collection
在某些情况下,使深层副本可以是一个不错的选择。这有点破解,但不是解决方案。也许,你可以在没有它的情况下改变你的架构和逻辑。
您在内存中只有一个列表。创建两个目录 列表 TMPElementsX =新名单(); List TMPElements = new List (); –
CharithJ
'TMPElementsX = TMPElements;'在此之后,这两个对象将指向相同的列表。尝试编写一个复制函数,只需复制列表的值并创建两个对象,而不是使用'='运算符。 – Darian