1

正如我在这里看到的,我可以使用这两个窗口来创建对象并使用我自己的代码中的方法。但是在调试(暂停或断点停止)时,我能够通过“立即”窗口访问当前上下文中数组的位置,如下所示: 如果我在这段代码之后暂停了调试会话:

    byte[] R = new byte[100];
    for (int i = 0; i < 100; i++)
    {
        R[i] = (byte)1;
    }

我可以通过即时窗口访问 R[37] 并查看它的值,但我无法在即时窗口中编写一个循环来验证所有值是否相等(只是一个愚蠢的例子),实际上,我'我根本无法编码(因为这不是它的目的)。

另一方面,我可以在 C# Interactive 中编写代码,但无法与当前调试会话变量进行交互。

好吧,恐怕答案是否定的,但是有没有办法在 VS2012 中存档这个(带有当前调试会话变量的代码)?

4

3 回答 3

2

正如您所料,答案是否定的,无法从交互式窗口与您的被调试者的状态进行交互。这是我们继续考虑的一个场景,但在此之前,您会被交互式窗口困住,并受到所有限制。

于 2013-07-05T20:36:44.793 回答
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.

   });
于 2013-07-04T23:56:57.520 回答
0

一种方法是在您的代码中添加静态辅助方法以协助进行此类调查。

如果您无法修改代码 - LINQ 确实提供了许多有用的方法作为 Hogan 的指针,同样由于对“即时窗口中没有 lambda 表达式”的限制,您只能进行相对基本的调用。

还要看看String.Join这需要一个IEnumerable- 用于组合要显示的值(如果ToString元素上有意义的话。

于 2013-07-05T00:16:40.757 回答