我有这个东西让我在代码的某些部分烦恼,我不知道是什么造成了它。
我有一段代码,我设置了一个断点。如果我然后使用我的光标并将鼠标悬停在变量上,我通常可以导航该变量的内容和值。
有些变量,我看不到内容,没有出现。
另外,如果我尝试调查那些我无法透过即时窗口的内容,它会告诉我The name 'temp' does not exist in the current context
我真的很生气,为什么会发生这种情况,一些整数而不是其他整数,一些类对象,而不是同类型的其他类。
关闭Visual Studio并重新启动无法修复它。
我在Debug中运行而没有优化。
只是在寻找这个问题的一些帮助,所以提前感谢。
以下是代码发生的示例,没有特殊代码或委托。它也可能发生在程序的随机部分,即使只有几行代码。
segs2D = ConvertSegmentsTo3DLines(segs2D);
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D);
TransformSegments(segs3D, transform);
foreach (var seg in segs3D)
MoveSegmentToSolid(seg, moveNormal, solid, false);
Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>();
double d1 = (double)(segs3D[0].GetP1Tag() ?? 0);
double d2= (double)(segs3D[0].GetP2Tag() ?? 0);
foreach (DSegment2D seg in segs3D)
{
d1= (double)(seg.GetP1Tag() ?? d1);
d2= (double)(seg.GetP2Tag() ?? d2);
...Stuff
}
答案 0 :(得分:6)
另外,如果我尝试调查那些我不能通过即时窗口的那些,它告诉我当前上下文中不存在名称'temp'
尝试使用方法的全名
例如:
namespace.class.method();
而不是
class.method();
似乎即时窗口依赖于当前选定的文件/项目。
希望这会有所帮助 的Mathias答案 1 :(得分:1)
我有类似的问题。我以为我在调试中,但有一个更简单(但很重要)的步骤。如果“解决方案配置”设置为“调试”,我必须单击“调试”旁边的向下箭头并选择“配置管理器...”,然后在相应的弹出窗口中,“配置”仍设置为“发布” - 我必须将其更改为“调试”并单击“关闭”按钮。从那里重新运行允许我在调试时查看所有变量。
答案 2 :(得分:0)
可能这些变量尚未在您遇到断点的代码块中声明或初始化(即执行没有那么远)。
例如,当你点到断点时,你所描述的悬停和立即窗口问题都会发生在以下代码块中的bar
:
public class Whatever
{
public void DoSomething()
{
string foo = "blah"; // Breakpoint hit and execution stopped here.
// Do something.
DoSomethingElse();
}
public void DoSomethingElse()
{
string bar = "yack";
// Do something else.
}
}
答案 3 :(得分:0)
事实证明,该方法的复杂性和缩进次数导致了当时的问题。我已经简化并运行了大部分原始代码,我不再遇到这个问题了。我也升级到了VS2012,这也可能有所帮助。