【发布时间】:2010-09-18 08:24:41
【问题描述】:
在 Visual Studio 中调试时是否可以迭代集合并仅列出过滤的对象信息?我会为此使用即时窗口,但虽然它允许对对象执行方法,但似乎不允许执行自定义循环语句。
ASP.NET 中的最简单示例:
this.Page.Validate();
if (!this.Page.IsValid())
{
// breakpoint here
}
我们如何迭代Page.Validators 集合并找到那些无效的+在该断点处输出它们的信息? (这不是主要问题,只是一个示例)
如果无法直接执行此操作,您是否有任何解决方法?不涉及代码修改的变通方法,只需在即时窗口或一些 Watch 表达式中编写代码。
在谷歌搜索时,我发现只有一种解决方法引用了here(虽然找不到原件):
"在你的代码中添加一个调试方法 做类似迭代的事情 集合中的所有对象。然后 您可以从 调试模式下的即时窗口 它会列举各种东西 为你。把它想象成一个 命令行调试器帮助器。你可以 想写多少就写多少。”
但这仍然是一种解决方法。我认为它应该是可行的,不需要太多的黑客攻击,更重要的是不需要修改代码。 当然,应该可以在一个语句中进行某种集合转换。
让我们坚持使用非泛型集合。 此外,即时窗口似乎不接受 lambda 表达式(尝试时出错:“表达式不能包含 lambda 表达式”)
【问题讨论】: