在调试过程中探测当前状态时,立即窗口是非常有用的工具。我了解到,通过使用问号,可以在那里做更多的事情,如图所示 在这篇文章中。
但是,我仍然不知道如何在那里执行LINQ查询(包含 lambda表达式)。我也没能执行一个 的foreach 声明。
执行以下语句时:
?(things.Select(thing=>thing.Id);)
?(foreach(var thing in things);)
我收到这些错误:
表达式不能包含lambda表达式
无效的表达式术语'foreach'
(如何)我可以在立即窗口中执行这些操作吗?
还有一个工具 VS画廊 但它据说它只适用于VS05和VS08,大多数程序员在很久以前就已经落后了。我正在寻找适用于VS13和/或VS15的东西。
根据visual studio 2015中提供的新功能,现在可以在watch / immediate窗口中获得对lambdas调试的支持:
调试器Windows中的Lambda表达式
您现在可以在Watch,Immediate和中使用lambda表达式
C#和Visual Basic中的其他调试器窗口。
资源:
Visual Studio 2015 RTM
在VS2015中,您可以在监视窗口和即时窗口中使用lambda表达式。
只需在即时窗口中添加监视或输入(在调试时和 things
在范围内):
things.Select(thing => thing.Id);
你会得到一份结果清单。
这是一个博客 这个
不幸的是,似乎不可能从immidiate窗口或观察窗口使用lambda。技术原因可能是linq查询通常转换为普通表达式,并且这需要一个完整的编译步骤而不是这两个窗口使用的技巧。
万一你不知道 thing=>thing.Id
part是lambda表达式。