将列表的元素移动到另一个列表

Dav*_*ave 0 c#

下面的代码失败了,我想这是因为Remove() - 方法破坏了循环顺序.但是我该如何解决呢?

List<string> test = new List<string>();
List<string> test2 = new List<string>();
test.Add("test");
test.Add("test");
test.Add("test");
test.Add("test");
foreach(string t in test)
{
    test2.Add(t);
    test.Remove(t);
}
Run Code Online (Sandbox Code Playgroud)

Sel*_*enç 5

你是对的问题,解决方案是迭代副本而不是实际的列表

foreach(string t in test.ToList())
{
     test2.Add(t);
     test.Remove(t);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你可以不用任何循环做你想做的事:

test2.AddRange(test);
test.Clear();
Run Code Online (Sandbox Code Playgroud)