当我看到奇怪的东西时,我正在调试我的代码。基本上它归结为:
你在这里看到的是带有负值的无符号整数...
我还注意到一些周围的变量没有value pop-up
(?)而其他变量没有。但是这个变量是唯一一个具有不可能价值的变量。
这怎么可能?
我只有C#Visual Studio 2010,所以我不知道其他版本或不同语言存在这个问题。如果是这种情况,我会相应地更改标题和标签。
答案 0 :(得分:8)
在调试时,Visual Studio将跟踪当前上下文中的每个变量。
考虑以下代码:
void SomeMethod1()
{
int j = 0;
}
void SomeMethod2()
{
int i = 0;
}//Breakpoint on this line.
当程序中断时,当前上下文为SomeMethod2
。此时,开发人员无法检查j
的值是多少。这是因为int j
不是当前上下文中的变量。
OP所描述行为背后的实际原因:
Visual Studio检查变量的名称是否存在于当前上下文中,如果变量本身存在,则不检查在当前的背景下。
因此,如果我们在j
中将变量i
的名称更改为SomeMethod1
,我们可以突然查看其值"值。想象一下,如果i
中的SomeMethod2
是一个字符串,会有多奇怪:
你什么时候该知道?
每当你有一段代码,它不能立即清楚当前的上下文是什么。我在下面的代码中遇到了这个问题:
private double CalculateFast(double d)
{
//Depending on the size of d, either [Method 1] or [Method 2] is faster.
//Run them both and use the answer of the first method to finish.
Tasks.Task.Factory.StartNew(() = >
{
//Method 1
}
//Method 2
return answer;
}
我正在调试Method 2
,但我认为我也可以查看Method 1
的变量。但事实并非如此,因为Method 1
有自己的背景。
答案 1 :(得分:-1)
尝试:
希望有所帮助。