这个问题已经有了答案:
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;
}
}