132

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

如何使用即时窗口?

4

3 回答 3

141

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 在即时窗口中工作,但有时可能会有点不一致。以我的经验,它似乎只在调试模式下可用,但在设计非调试模式下不可用。

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

于 2009-09-01T07:57:09.253 回答
13

使用即时窗口执行命令

即时窗口也可用于执行命令。只需键入 a>后跟命令。

在此处输入图像描述

例如>shell cmd,将启动一个命令 shell(例如,这对于检查哪些环境变量被传递给 Visual Studio 很有用)。>cls将清除屏幕。

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

于 2017-02-27T18:57:55.520 回答
7

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

要显示即时窗口,请选择 Debug >Windows >Immediate 或按 Ctrl-Alt-I

在此处输入图像描述

这是立即窗口的示例:

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();}

添加断点

在此处输入图像描述

调用命令

在此处输入图像描述

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

于 2017-11-22T07:56:32.830 回答