foreachintroduces only one variable. While the parameter variable lambda is "fresh" with every call.
Compare with:
foreach (var v1 in values)
{
var freshV1 = v1;
funcs.Add(() => freshV1);
}
foreach (var func in funcs)
{
Console.WriteLine(func());
}
I.e
foreach (T v in ...) { }
can be described as:
T v;
foreach(v in ...) {}
Happy coding.
user166390
source
share