使用即时窗口时,必须在运行时和设计时间之间有所不同。
如果我在设计时使用立即Window并将局部变量放在堆栈中:
string s = "test";
VS将启动编译器并在堆上创建一个名为s的新变量,并在设计时使用的临时堆栈帧上放置一个指针。 (至少我认为它是如何工作的,至少是简化的。如果我错了,请纠正我)
从现在开始,在运行我的应用程序或关闭VS之前,我无法将s用于其他任何事情:
int s = 12;
A local variable named 's' is already defined in this scope
我可以使用contextmenu清除即时窗口,但这实际上只是清除了窗口本身。我的局部变量仍然在堆栈中。
我想知道,如果真的没有办法清除我之前在即时窗口中创建的所有变量?
(我使用的是VS 2012 SP1教授,但我猜这个版本与VS的每个版本保持一致)
答案 0 :(得分:2)
我不知道视觉工作室究竟发生了什么的确切基础,但似乎VS在vshost.exe进程中保留了编译版本。
如果您终止关联的进程(即WindowsFormsApplication1.vshost.exe * 32),它将清除堆栈并允许您重用该变量而无需重新启动VS。
答案 1 :(得分:1)
this MSDN page中描述了设计时调试。在解决您的问题的具体帮助上相当简短。 Visual Basic代码的例子并非完全是偶然的,这是旧的VB6 IDE中的一个重要特性。在编程环境中肯定更实用,因为编写易于使用立即窗口进行测试和调试的过程代码是很常见的。
我能想到清除解释器执行状态的最快方法是按F11(Debug + Step Into)并取消调试。或者输入> Debug.StepInto和> Debug.StopDebugging。不理想。