假设我有一个C#方法,如下所示:
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;
}
这个方法创建了一个线程,访问在该方法中创建的局部变量。当它访问该变量时,方法已经结束,因此局部变量 i 不应存在。但是代码可以正常运行。据我理解,在方法块完成后,局部变量不应该存在。我无法理解这一点。