Hacker News new | ask | show | jobs
by galactus 5206 days ago
Exactly, I also find it a bit confusing. I assume they are capturing variables (it would be crazy otherwise!) but they treat loop variables differently (as if a new variable was created every time).
1 comments

Yes, they are now creating a new variable in the `foreach` loop each time.

They aren't doing the same for regular `for` loops so their behavior with respect to lambdas won't change.

To add to this, Eric Lippert, a principal dev on the C# compiler team, mentions this in a StackOverflow response (http://stackoverflow.com/a/8899347/59111). He also blogged about the issue in general in a two part series, the first of which can be read here: Closing over the loop variable considered harmful (http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closi...).