在调试过程中探测当前状态时,Immediate Window是非常有用的工具。我了解到,通过使用问号,可以在这里做更多的事情,正如这篇文章所示。
然而,我仍然不知道如何执行LINQ查询那里(包括 lambda表达式)。我也没有执行foreach语句。
执行以下语句时:
?(things.Select(thing=>thing.Id);)
?(foreach(var thing in things);)
我得到这些错误:
表达式不能包含lambda表达式
无效表达式"foreach"
(如何)我可以执行这些在立即窗口?
在VS Gallery中也有一个工具,但据说它只适用于VS05和VS08,大多数程序员很久以前就放弃了。我正在寻找适用于VS13和/或VS15的东西
根据visual studio 2015中可用的新特性,现在可以在watch/immediate窗口中调试lambdas:
源:调试器Windows中的Lambda表达式
现在可以在Watch、Immediate和c#和Visual Basic中的其他调试器窗口。
Visual Studio 2015 RTM
在VS2015中,您可以在监视窗口和即时窗口中使用lambda表达式。
只需在直接窗口中添加手表或类型(当调试和things
在范围内时):
things.Select(thing => thing.Id);
,你会得到一个结果列表。
这是一个关于这个的博客
不幸的是,似乎不可能从直接窗口或监视窗口使用lambda。这样做的技术原因可能是linq查询通常被转换为普通表达式,这需要一个完整的编译步骤,而不是像这两个窗口那样使用技巧。
如果您不知道thing=>thing.Id
部分是lambda表达式