Bu kodu dikkate alın.Foreach ve list.ForEach() arasında kapaklar nasıl değişir?
var values = new List<int> {123, 432, 768};
var funcs = new List<Func<int>>();
values.ForEach(v=>funcs.Add(()=>v));
funcs.ForEach(f=>Console.WriteLine(f()));//prints 123,432,768
funcs.Clear();
foreach (var v1 in values)
{
funcs.Add(()=>v1);
}
foreach (var func in funcs)
{
Console.WriteLine(func()); //prints 768,768,768
}
nedeniyle kapatma değişkenin ikinci foreach baskılar 768 3 kez lambda tarafından yakalanan biliyoruz. İlk durumda neden olmaz? foreach
anahtar kelimesi Foreach
yönteminden nasıl farklıdır? Sadece bir değişkeni tanıtır i values.ForEach
Teşekkürler. Yazma için +1. –