In this example, I\'m attempting to pass by value, but the reference is passed instead.
for (int i = 0; i < 10; i++) { Thread t = new Thread(() =>
Short answer: closures. Long answer given here (among other places): Differing behavior when starting a thread: ParameterizedThreadStart vs. Anonymous Delegate. Why does it matter?