2014-10-06 220 views
0

下面的代碼失敗,我想這是因爲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); 
} 

回答

5

你是對這個問題,解決的辦法是遍歷一個副本,而不是實際列表

foreach(string t in test.ToList()) 
{ 
    test2.Add(t); 
    test.Remove(t); 
} 

順便說一句,你可以做你想做的,而無需使用任何循環:

test2.AddRange(test); 
test.Clear(); 
+0

謝謝你,先生! – Dave 2014-10-06 11:05:33

0

它因失敗,因爲foreach迭代變量或只讀。

解決錯誤的一種方法是將foreach循環更改爲for循環,從最後一個元素開始循環,以便在刪除元素時不會弄亂順序。

相關問題