我翻译了这段代码(它只捕获外部变量有不好的副作用):
foreach (TaskPluginInfo tpi in Values)
{
GenerateMenu(menuStrip, tpi.MenuTree, tpi.MenuText, delegate { tpi.ShowTask() });
}
至此代码(因为上述代码不起作用):
foreach (TaskPluginInfo tpi in Values)
{
// must capture the variable
var x = tpi;
GenerateMenu(menuStrip, tpi.MenuTree, tpi.MenuText, delegate { x.ShowTask(); });
}
解决这种鲜为人知的副作用的正确术语是什么?现在,我评论说“必须捕获变量”。捕获这个词是正确的术语吗?