Kullanırsam:
var strings = new List<string> { "sample" };
foreach (string s in strings)
{
Console.WriteLine(s);
strings.Add(s + "!");
}
Addiçinde foreachbizim ayaklarının altındaki halıyı çekerek beri ben, mantıksal düşünün ki; (numaralama işlemi yürütmek olmayabilir Koleksiyon modifiye edilmiş) bir InvalidOperationException atar.
Ancak kullanırsam:
var strings = new List<string> { "sample" };
strings.ForEach(s =>
{
Console.WriteLine(s);
strings.Add(s + "!");
});
Bir OutOfMemoryException atana kadar döngü yaparak kendini ayağından anında vurur.
Her zaman List.ForEach'in ya için foreachya da için bir ambalaj olduğunu düşündüğüm gibi, bu bana bir sürpriz olarak geliyor for.
Bu davranışın nasıl ve neden olduğuna dair bir açıklaması olan var mı?
(Sürekli olarak tekrarlanan bir Genel Liste için ForEach döngüsünden esinlenmiştir )