在Visual Studio立即窗口中清除堆栈

bud*_*ble 12 .net c# visual-studio-2012

使用即时窗口时,必须在运行时和设计时之间有所不同.

如果我在设计时使用立即Window并将一个局部变量放在堆栈中:

string s = "test";
Run Code Online (Sandbox Code Playgroud)

VS将启动编译器并在堆上创建一个名为s的新变量,并在设计时使用的临时堆栈帧上放置一个指针.(至少我认为它是如何工作的,至少是简化的.如果我错了,请纠正我)

从现在开始,在运行我的应用程序或关闭VS之前,我无法将s用于其他任何事情:

int s = 12;
A local variable named 's' is already defined in this scope
Run Code Online (Sandbox Code Playgroud)

我可以使用contextmenu清除即时窗口,但这实际上只是清除了窗口本身.我的局部变量仍然留在堆栈中.

我想知道,如果真的没有办法清除我之前在即时窗口中创建的所有变量?

(我使用的是VS 2012 SP1教授,但我猜这个问题与VS的每个版本保持一致)

com*_*ech 2

我不知道 Visual Studio 中到底发生了什么,但 VS 似乎在 vshost.exe 进程中保留了编译版本。

如果您终止关联的进程(即 WindowsFormsApplication1.vshost.exe *32),它将清除堆栈并允许您重用该变量,而无需重新启动 VS。