【发布时间】:2010-06-18 23:40:44
【问题描述】:
据我所知,当我在C#中定义一个方法时,这个方法中的局部变量会在执行完这个方法的块后从内存中释放[当GC想要的时候],
但如果我在方法中有内联回调,这些局部变量也会从内存中释放吗?
在下面的例子中,[x] 变量在方法执行完成后将保持其值,并且消息将毫无问题地显示 [x] 的值,尽管它在回调中!
private void MyMethod()
{
int x = 1;
System.Timers.Timer t = new System.Timers.Timer(1000);
t.Elapsed += (sender, e) => MessageBox.Show((x++).ToString()); ;
t.Start();
}
【问题讨论】: