我想知道是否可以将一个列表中的对象添加到另一个列表中,如下所示:
objectToRemoveList.Add(listOfObjects.ElementAt(i));
Run Code Online (Sandbox Code Playgroud)
然后,我想删除列表中的所有对象,如下所示:
objectToRemoveList.Clear();
Run Code Online (Sandbox Code Playgroud)
我想知道,因为看起来物体还在那里!?
那不行.让我以图解的方式解释它.您的对象存在于内存中的某个位置:
a b c d
Run Code Online (Sandbox Code Playgroud)
您的列表listOfObjects仅包含对每个对象的引用:
listOfObjects: | | | |
| | | |
v v v v
a b c d
Run Code Online (Sandbox Code Playgroud)
如果你添加一些这些项目(比如说b和d)objectToRemoveList,你也只是添加一个引用:
listOfObjects: | | | |
| | | |
v v v v
a b c d
^ ^
| |
objToRemoveLst: | |
Run Code Online (Sandbox Code Playgroud)
通过执行objectToRemoveList.Clear,您只需删除那里的所有引用.请注意listOfObjects完全不受影响的方式:
listOfObjects: | | | |
| | | |
v v v v
a b c d
objToRemoveLst:
Run Code Online (Sandbox Code Playgroud)
要实现您想要的功能,您可以使用以下循环:
foreach (object o in objectToRemoveList) {
listOfObjects.Remove(o);
}
Run Code Online (Sandbox Code Playgroud)
这样,实际上删除了引用listOfObjects,这是你想要的:
listOfObjects: | |
| |
v v
a b c d
^ ^
| |
objToRemoveLst: | |
Run Code Online (Sandbox Code Playgroud)