将对象添加到另一个列表?

3D-*_*tiv -1 c#

我想知道是否可以将一个列表中的对象添加到另一个列表中,如下所示:

objectToRemoveList.Add(listOfObjects.ElementAt(i));
Run Code Online (Sandbox Code Playgroud)

然后,我想删除列表中的所有对象,如下所示:

objectToRemoveList.Clear();
Run Code Online (Sandbox Code Playgroud)

我想知道,因为看起来物体还在那里!?

Hei*_*nzi 6

那不行.让我以图解的方式解释它.您的对象存在于内存中的某个位置:

  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)

如果你添加一些这些项目(比如说bd)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)