如何在C#/visualstudio/Unity3d中查看(即调试)lambda范围内的额外lambda变量?
将Visual Studio Professional 2015与Unity一起使用时,我注意到,当我在lambda表达式的主体中单步执行时,我无法查看在lambda表达式外部声明/分配但在lambda表达式内部读取的变量如何在C#/visualstudio/Unity3d中查看(即调试)lambda范围内的额外lambda变量?,c#,unity3d,lambda,visual-studio-2015,mono,C#,Unity3d,Lambda,Visual Studio 2015,Mono,将Visual Studio Professional 2015与Unity一起使用时,我注意到,当我在lambda表达式的主体中单步执行时,我无法查看在lambda表达式外部声明/分配但在lambda表达式内部读取的变量 private IEnumerator DoTheThing(string filter) { TextureDownload texDl = new TextureDownload(); texDl.OnCompleted +
private IEnumerator DoTheThing(string filter)
{
TextureDownload texDl = new TextureDownload();
texDl.OnCompleted += () =>
{
_log.Log("Mesh texture " + texDl.GetType() + ":" + texDl.GetHashCode());
textures.Add(texDl);
};
yield break;
}
我得到了错误
标识符texDl
不在范围内
显然,该变量在此范围内是可访问的,因为lambda函数正在使用它
是否有任何远程简单/方便的方法来观察这些变量的值?结果表明,这是 Mono/Unity与协程和lambda表达式之间存在问题 协同程序本身也是一个隐式闭包,它将所有局部变量作为成员变量移动到一个单独的类中。这意味着不可能在生成器方法中创建“真实”局部变量。这就是显式局部变量声明不起作用的原因
请参见也许您应该发布更多的代码。