7

通常,当某个方法在其中某处包含 lambda 表达式时,如果您编辑该方法,Visual Studio 会说:

修改包含 lambda 表达式的“方法”将阻止调试会话在启用编辑并继续时继续。

有没有办法避免这个错误?

就我而言,我有一个类,其构造函数接受Action.

Button(Texture2D t2d, Vector2 v2, Action onPress)
...
Button b = new Button(t2d, new Vector2(40, 60), () => { MainStatic.t = t; });

关于此问题的其他信息:

4

1 回答 1

14

更新:在用户多次请求此功能后,Visual Studio 2015 中添加了所需功能。这个答案和问题现在已经过时了。


有没有办法避免这个错误?

是的。从方法中删除 lambda。或者,不要编辑方法。

有没有办法在不从方法中删除 lambda 并仍然编辑方法的情况下避免此错误?

,错误信息不是在骗你。

如果你好奇的话,这样做的原因是因为 lambda 被编译为嵌套类的方法,而 lambda 封闭的局部变量成为该类的字段。编辑并继续功能会在您编辑当前方法时即时重写它,但即使是简单的编辑也会导致对这些嵌套类进行复杂的更改。调试器团队没有花费大量精力让 E&C 为这种场景工作,从而从其他更有价值的功能中窃取资源,而是简单地将其定为非法。

于 2013-01-06T18:09:52.477 回答