这个问题已经有了答案:
The scope of variable in inner anonymous method
2答
请考虑以下代码:

public ModelView(Model model) : this()
{
    Loaded += (object sender, RoutedEventArgs e) =>
    {
        DataContext = model;
    };
}

Loaded事件再次运行时,参数model存在于内存中,但从未显式保存,对吗?

最佳答案

除了@avner的答案外,这也是c编译器在封面下为您生成的:

public ModelView(Model model) : this()
{
    var closure = new AnonymousClass { _this = this, model = model };

    Loaded += closure.Loaded;
}

private class AnonymousClass
{
    public ModelView _this;
    public Model model;

    public void Loaded(object sender, RoutedEventArgs e)
    {
        _this.DataContext = model;
    }
}

10-04 12:05
查看更多