我有这个有趣且有些烦人的问题。
在调试会话期间,我无法获得没有任何有形赋值的变量。
例如:
public void SomeMethod()
{
string TheString = "Hello World";
Thread.sleep(1000); // Breakpoint here
}
在上面的方法中,如果我在TheString获取其值后立即设置断点,现在因为TheString实际上从未在任何执行语句中使用。在设计时,变量是灰色的,当你将鼠标悬停在它上面时,它表示“从不使用局部变量TheString”
所有这一切都很好,但在调试会话期间,您无法通过即时窗口获得对TheString的任何引用。就像变量甚至不存在一样。
例如:
?TheString “TheString”这个名称在当前上下文中不存在
现在做什么工作:
public void SomeMethod()
{
string TheString = "Hello World";
Thread.sleep(1000); // Breakpoint here
MessageBox.Show(TheString);
}
它的工作原理是因为该值在运行时在执行路径中使用。 在这个阶段,我不确定这是否是Visual Studio 2013的新功能?如果可能,我想要定期调试,感谢您的帮助。
答案 0 :(得分:1)
您可能正在发布模式下构建。
在发布模式下构建时,编译器会执行一些代码优化。其中之一是删除从未使用过的变量。