如何在 VisualStudio 中使用“即时窗口”?

即时窗口是调试应用程序的一个非常有用的工具。它可用于执行在断点上下文中有效的代码语句和检查值。我还用它来输入代码片段来学习语言特性。

如何使用“即时窗口”?

128342 次浏览

Visual Studio 中的即时窗口的一个很好的特性是它能够计算方法的返回值,特别是当它被客户端代码调用,但它是变量赋值的 没有部分时。如前所述,在调试模式下,您可以与变量交互,并在内存中执行表达式,这对于实现这一点非常重要。

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

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

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

? GetSum(2, 4)
6

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

例如,假设您的类是这样的:

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

如果对象已经存在于内存中,并且在作用域中,那么只要它已经实例化了 之前,你就可以在即时窗口中调用它(或者,至少在代码在调试模式中暂停之前) :

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

此外,如果您想直接交互和测试该方法,而不依赖于内存中的现有实例,那么您可以在即时窗口中实例化您的 自己的实例:

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

如果你想做进一步的评估、计算等,你可以更进一步,将方法的结果临时分配给变量:

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

此外,如果你甚至不想为一个新对象声明一个变量名,只是想运行它的一个方法/函数,那么这样做:

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

查看方法值的一种非常常见的方法是选择一个类的方法名并执行“添加监视”,这样您就可以在“监视”窗口中查看它的当前值。但是,需要再次实例化对象,并在范围内显示有效值。与使用即时窗口相比,这种方法的功能要少得多,限制也更多。

除了检查方法,你还可以做一些简单的数学公式:

? 5 * 6
30

或比较价值:

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

问号(’?’)如果您直接在“即时窗口”中,则不需要这样做,但为了清晰起见(为了区分键入的表达式和结果) ,这里包含了这一点但是,如果你在命令窗口中,需要在即时窗口中做一些快速操作,那么在你的语句前面加上“ ?”你可以走了。

Intellisense 在即时窗口 中工作,但有时可能有点不一致。根据我的经验,它似乎只能在调试模式下使用,而不能在设计、非调试模式下使用。

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

使用即时窗口执行命令

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

enter image description here

例如,>shell cmd将启动一个命令 shell (这对于检查传递给 VisualStudio 的环境变量非常有用)。>cls会清除屏幕。

下面是一些常用的命令,它们都有自己的别名: https://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx

“即时”窗口用于调试和计算表达式、执行语句、打印变量值等。它允许您输入在调试期间由开发语言计算或执行的表达式。

若要显示“即时窗口”,请选择“调试”> “窗口”> “即时”或按 Ctrl-Alt-I

enter image description here

下面是“即时窗口”的一个例子:

int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}

添加断点

enter image description here

呼叫命令

enter image description here

Https://msdn.microsoft.com/en-us/library/f177hahy.aspx