立即窗口是调试应用程序的极其有用的工具。它可以用于执行在断点上下文中有效的代码语句并检查值。我还使用它来输入代码片段以学习语言特性。
如何使用立即窗口?
立即窗口是调试应用程序的极其有用的工具。它可以用于执行在断点上下文中有效的代码语句并检查值。我还使用它来输入代码片段以学习语言特性。
如何使用立即窗口?
Visual Studio中即时窗口的一个不错的功能是它能够评估方法的返回值,特别是当它被您的客户端代码调用但它不是变量赋值的一部分。在Debug模式下,正如之前提到的,您可以与内存中的变量交互并执行表达式,这在能够做到这一点方面起着重要作用。
例如,如果您有一个静态方法返回两个数的和:
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 可以在即时窗口中使用,但有时会有一些不一致性。据我的经验,它似乎只能在调试模式下使用,而在设计、非调试模式下则无法使用。
不幸的是,即时窗口还不能支持循环。
Ctrl + Alt + I
或打开_Debug -> Windows -> Immediate_以将文本翻译成中文。 - Ray即时窗口也可以用来执行命令。只需输入一个>
,然后跟上命令。
例如,>shell cmd
将启动一个命令窗口(这可以用于检查传递给Visual Studio的环境变量,例如)。>cls
将清除屏幕。
以下是一些常用命令及其别名:https://msdn.microsoft.com/zh-cn/library/c3a0kd3x.aspx
>open Filename
会在解决方案中打开所选文件,并且还具有文件名自动完成功能。 - Phillip Ngan即时窗口用于调试和评估表达式、执行语句、打印变量值等。在调试期间,它允许您输入要由开发语言评估或执行的表达式。
要显示即时窗口,请选择“调试”>“窗口”>“即时”或按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();}
添加断点
调用命令