Блог переехал. Актуальная версия поста находится по адресу: http://aakinshin.net/ru/blog/dotnet/listforeach-net-45/.
Продолжим обсуждать тему изменения коллекции внутри цикла foreach. Следующий код
var list = new List<int> { 1, 2 };
foreach (var i in list)
{
if (i == 1)
list.Add(3);
Console.WriteLine(i);
}
выбросит InvalidOperationException. А как думаете, что случится при выполнении цикла через List<T>.ForEach?
var list = new List<int> { 1, 2 };
list.ForEach(i =>
{
if (i == 1)
list.Add(3);
Console.WriteLine(i);
});