C# foreach Closure Behavior Explained: Why Loop Variables Were Reused | CodeTrail