Я хочу сначала выполнить поиск дерева в ширину, используя Очередь
var q = new Queue<T>();
q.Enqueue(Root);
foreach(T root in q)
{
foreach(T t in root.Children)
q.Enqueue(t);
}
Однако я получаю «Коллекция была изменена после создания экземпляра перечислителя». Исключение.
Есть ли тип C #, с которым я могу это сделать?
Редактировать: небольшое чтение заставляет меня думать, что я могу делать это совершенно неправильно.
Есть ли способ использовать foreach для удаления из очереди?
это работает, но безобразно (ОМХО)
var q = new Queue<T>();
q.Enqueue(Root);
while(q.Count > 0)
{
T root = q.Dequeue();
foreach(T t in root.Children)
q.Enqueue(t);
}