如何在Visual Studio中使用即时窗口?

立即窗口是一个非常有用的debugging应用程序的工具。 它可用于执行在断点上下文中有效的代码语句并检查值。 我也使用它来input代码片段来学习语言function。

你如何使用即时窗口?

Visual Studio中即时窗口的一个很好的function是它可以评估方法的返回值,特别是如果它被客户端代码调用,但它不是variables赋值的一部分。 在debugging模式下,如上所述,您可以与variables进行交互并在内存中执行expression式,这对于执行此操作起着重要的作用。

例如,如果您有一个返回两个数字之和的静态方法,例如:

private static int GetSum(int a, int b) { return a + b; } 

然后在立即窗口中,您可以键入以下内容:

 ? GetSum(2, 4) 6 

正如你所看到的,这对静态方法非常有效。 但是,如果方法是非静态的,则需要与方法所属对象的引用进行交互。

例如,让我们说这是你的类看起来像:

 private class Foo { public string GetMessage() { return "hello"; } } 

如果对象已经存在于内存中并且在范围内,那么只要当前断点之前 (或者至less在代码在debugging模式下暂停之前)实例化,就可以在立即窗口中调用该对象:

 ? foo.GetMessage(); // object 'foo' already exists "hello" 

另外,如果你想直接交互和testing方法而不依赖内存中已有的实例,那么你可以在即时窗口中实例化你自己的实例:

 ? Foo foo = new Foo(); // new instance of 'Foo' {temp.Program.Foo} ? foo.GetMessage() "hello" 

如果您想进行进一步的评估,计算等,您可以进一步将临时方法的结果分配给variables:

 ? string msg = foo.GetMessage(); "hello" ? msg + " there!" "hello there!" 

而且,如果你甚至不想为一个新的对象声明一个variables名,只想运行它的一个方法/函数,那就这样做:

 ? new Foo().GetMessage() "hello" 

查看方法的一个非常常见的方法是select一个类的方法名称,并执行“添加监视”,以便在“监视”窗口中查看其当前值。 但是,对象需要再一次被实例化,并在范围内显示一个有效的值。 与使用即时窗口相比,这个function要强大得多,限制性也更大。

随着检查方法,你可以做简单的math方程:

 ? 5 * 6 30 

或比较值:

 ? 5==6 false ? 6==6 true 

如果直接在立即窗口中,问号('?')是不必要的,但为了清楚起见,这里包含了问号(区分expression式中的types与结果)。但是,如果您处于命令窗口并且需要在即时窗口中做一些快速的东西,然后在您的语句前加'?' 然后离开你

智能感知工作在即时窗口 ,但有时可能有点不一致。 根据我的经验,它似乎只能在debugging模式下使用,而不能在devise,非debugging模式下使用。

不幸的是,即时窗口的另一个缺点是它不支持循环。

使用立即窗口执行命令

即时窗口也可以用来执行命令。 只需键入一个>然后是命令。

在这里输入图像说明

例如>shell cmd将启动一个命令shell(例如,这可以用来检查传递给Visual Studio的环境variables)。 >cls将清除屏幕。

以下是常用命令列表,它们具有自己的别名: https : //msdn.microsoft.com/en-us/library/c3a0kd3x.aspx

我现在用的比以前less。 有时,改变variables的值或者检查对象是有帮助的。 这也可以通过观看窗口来完成,所以我倾向于更频繁地使用它。