编辑:
如果一位有能力验证此类事情的有经验的程序员向我展示了这种方法可以避免内存泄漏的证据,我将非常感激。我一直在将它引入我的许多编码工作,但我仍然有一个小小的疑问。不幸的是,我不够好/不知道调查它的工具。
原来的:
我最近了解到 lambda 表达式的某些用途会造成内存泄漏:
ProjectData Project;
void OnLaunchNewProject()
{
NewProjectUI newProjectUI = new NewProjectUI();
newProjectUI.OnCompleted += (o, e) =>
{
Project = newProjectUI.NewProject;
view.Content = string.Format("Project {0} was created and saved successfully.", Project.Name);
};
newProjectUI.OnCancelled += (o, e) => { view.Content = "Operation was cancelled.";};
view.Content = newProjectUI;
}
我在这个博客中了解到这种方法的不良影响。
我不完全理解在 lambda 表达式中引用局部变量的影响,这限制了我规避问题的能力。
在典型方法和使用 lambda 之间,理想的折衷方案是什么?我喜欢 lambda 的一点是当我不需要 EventHandler 的参数时在我的类的主体(发送者/路由参数)中跳过它们的定义。