关于c#:通过动态的对象列表循环

Looping through a dynamic List of objects

本问题已经有最佳答案,请猛点这里访问。

我正在尝试实现一个片段,在这里我们可以循环访问对象的动态列表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
4
5
6
7
8
9
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

感谢您的帮助。谢谢。


这可以通过用for环替换foreach来实现。

1
2
3
4
5
6
7
8
for (var i = 0; i < l.Count; i++)
{
     Console.WriteLine(l[i]);
     if (l[i] == 3)
     {
        l.Add(5);
     }
}