Мне нужно перебрать список (или любое другое перечисление), но я хотел бы добавить значения в список в ходе итерации.
Это пример.
public static void RunSnippet()
{
List<int> hello = new List<int>();
hello.Add(1); hello.Add(2); hello.Add(3);
foreach (var x in hello)
{
Console.WriteLine(x);
if (x == 1) {
hello.Add(100);
}
}
}
Я ожидал получить «1,2,3,100», но вместо этого получил эту ошибку.
Как я могу перебирать список, который изменяется в процессе?
Я хочу выполнить итерацию по элементам для обработки чего-либо. Дело в том, что некоторые элементы нужно раскладывать на подэлементы и так далее.
public static void RunSnippet()
{
List<Element> hello = new List<Element>();
hello.Add(Element); hello.Add(Element); hello.Add(Element);
foreach (var x in hello)
{
List<Element> decomposed;
decomposed = Decompose(x);
if (decomposed != null) {
foreach (var y in decomposed)
{
hello.Add(y);
}
}
}
}