在调试会话期间,我无法获取没有任何实际分配的变量。
举个例子:
public void SomeMethod()
{
string TheString = "Hello World";
Thread.sleep(1000); // Breakpoint here
}
在上面的方法中,如果我在 TheString 获取其值分配之后设置断点,那么现在由于 TheString 从未在任何执行语句中实际使用过。在设计时,变量是灰色的,当你将鼠标悬停在它上面时,它会显示“局部变量 TheString 从未使用过”
所有这些都很好,但是在调试会话期间,您无法通过直接窗口获取对 TheString 的任何引用。就像变量根本不存在一样。
举个例子:
?弦乐 当前上下文中不存在名称“TheString”
现在有效的是:
public void SomeMethod()
{
string TheString = "Hello World";
Thread.sleep(1000); // Breakpoint here
MessageBox.Show(TheString);
}
它之所以有效,是因为该值在运行时在执行路径中使用。 现阶段我不确定这是否是Visual Studio 2013的新功能?如果可能的话,我希望定期进行调试。
您可能正在以 Release 模式进行构建。
在 Release 模式下构建时,编译器会进行一些代码优化。其中之一是删除从未使用过的变量。