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(() => new PhoneJobTest(i));
    t.Start();
}

This can be remedied like so:

 for (int i = 0; i < 10; i++)
{
    int jobNum = i;
    Thread t = new Thread(() => new PhoneJobTest(jobNum));
    t.Start();
}

What's is going on here? Why does the original example pass the reference?

c#
Edit
Report