在我看到here时,我可以使用这两个窗口来创建对象并使用我自己的代码中的方法。但是在调试(暂停或断点停止)时,我能够通过立即窗口访问当前上下文中数组的位置,如下所示:如果我在此代码后面暂停了调试会话:
byte[] R = new byte[100];
for (int i = 0; i < 100; i++)
{
R[i] = (byte)1;
}
我可以通过立即窗口访问R [37]并看到它的值,但是我无法在立即窗口中编码循环来验证所有值是否相等(只是一个愚蠢的例子),实际上,我根本无法编码(因为这不是它的目的)。
另一方面,我可以使用C#Interactive进行编码,但无法与当前的调试会话变量进行交互。
好吧,我担心答案是否定的,但有没有办法在VS2012中存档(当前调试会话变量的代码)?
答案 0 :(得分:1)
你可以使用linq来做你在循环中可以做的任何事情,因为它被评估为表达式
例如
R.Where(item => item != R[0]);
将显示所有不等于第一项的项目。
这就是为什么你可以用linq表达式做任何事情:
Enumerable.Range(1,1).Select(one => {
// any function code you want here
//return any type of variable.
});
答案 1 :(得分:1)
正如您所料,答案是否定的,没有办法从交互式窗口与您的debugee状态进行交互。这是我们继续思考的一个场景,但在此之前,您仍然坚持使用交互式窗口,并且存在所有限制。
答案 2 :(得分:0)
一种方法是在代码中添加静态辅助方法,以协助进行此类调查。
如果你不能修改代码 - LINQ确实提供了许多有用的方法作为Hogan的指针,也是由于对“立即窗口中没有lambda表达式”的限制,你只能进行相对基本的调用。
另请查看String.Join
IEnumerable
- 将值组合显示非常有用(如果元素ToString
有意义。