Обход динамически изменяющегося списка в C #

Мне нужно перебрать список (или любое другое перечисление), но я хотел бы добавить значения в список в ходе итерации.

Это пример.

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», но вместо этого получил эту ошибку.

enter image description here

Как я могу перебирать список, который изменяется в процессе?

ДОБАВЛЕНО

Я хочу выполнить итерацию по элементам для обработки чего-либо. Дело в том, что некоторые элементы нужно раскладывать на подэлементы и так далее.

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);
            }
        }
    }
}
6
задан prosseek 31 January 2012 в 21:00
поделиться