2016-09-15 66 views
0

我試圖實現一個片段,我們可以通過動態列表對象進行循環。通過動態列表循環對象列表

using System; 
using System.Collections.Generic; 

public class Program 
{ 
    public static void Main() 
    { 
     var l = new List<int>(); 
     l.Add(1); 
     l.Add(2); 
     l.Add(3); 
     l.Add(4); 

    foreach(var i in l){ 
     Console.WriteLine(i); 
     if(i==3){ 
      l.Add(5); 
     } 

    } 

} 

} 

這是拋出低於運行時錯誤。

1 
2 
3 
Run-time exception (line 15): Collection was modified; enumeration operation may not execute. 

Stack Trace: 

[System.InvalidOperationException: Collection was modified; enumeration operation may not execute.] 
    at Program.Main(): line 15 

任何幫助表示讚賞。謝謝。

回答

2

這可以通過for循環替換foreach實現

for (var i = 0; i < l.Count; i++) 
{ 
    Console.WriteLine(l[i]); 
    if (l[i] == 3) 
    { 
     l.Add(5); 
    } 
} 
+0

https://dotnetfiddle.net/f6gawa – Reddy

+1

我認爲你需要有'如果(L [I] == 3)'保持與OP的含義相同。 – StriplingWarrior

+0

我錯過了@StriplingWarrior。糾正。 – Reddy