如果我调用在未执行的函数内声明的事件处理程序会发生什么?

时间:2010-06-28 19:36:00

标签: c# .net

这样的事情:

    void SomeFunc()
    {
        int InsideVar = 1;
        EventHandler handler = (s, e) => { MessageBox.Show(InsideVar.ToString()); };
        SomeEvent += handler;
    }

然后在SomeFunc执行后调用SomeEvent。我实际上测试了它并且它工作但不能理解为什么。我认为InsideVar会在堆栈上并在执行函数后停止存在。我期待一个例外。有人可以澄清这个吗?

1 个答案:

答案 0 :(得分:4)

您刚刚发现closures