为了说明 Nippysaurus 的答案:如果您要将新项目添加到列表中并且想在同一个枚举期间也处理新添加的项目,那么您可以只使用for循环而不是foreach循环,问题解决了 :)
var list = new List<YourData>();
... populate the list ...
//foreach (var entryToProcess in list)
for (int i = 0; i < list.Count; i++)
{
var entryToProcess = list[i];
var resultOfProcessing = DoStuffToEntry(entryToProcess);
if (... condition ...)
list.Add(new YourData(...));
}
对于可运行的示例:
void Main()
{
var list = new List<int>();
for (int i = 0; i < 10; i++)
list.Add(i);
//foreach (var entry in list)
for (int i = 0; i < list.Count; i++)
{
var entry = list[i];
if (entry % 2 == 0)
list.Add(entry + 1);
Console.Write(entry + ", ");
}
Console.Write(list);
}
最后一个例子的输出:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 3, 5, 7, 9,
清单(15 项)
0
1
2
3
4
5
6
7
8
9
1
3
5
7
9