Скажем, у меня есть метод С#, подобный этому
public void MyMethod()
{
int i = 0;
var thread = new Thread(() =>
{
Thread.Sleep(100);
if (i == 0)
{
Console.WriteLine("Value not changed and is {0}", i);
}
else
{
Console.WriteLine(" Value changed to {0}.", i);
}
});
thread.Start();
i = 1;
}
Здесь метод создает поток, который обращается к локальной переменной, созданной в методе. К моменту обращения к этой переменной метод завершился, и поэтому локальная переменная я не должна существовать. Но код работает без проблем. По моему пониманию, локальная переменная не существует после завершения блока метода. Я не могу это получить.