gpt4 book ai didi

c# - 调试时 Visual Studio 显示错误值?

转载 作者:太空狗 更新时间:2023-10-29 20:13:45 24 4
gpt4 key购买 nike

当我看到一些奇怪的东西时,我正在调试我的代码。基本上归结为:

Weirdness

你在这里看到的是一个负值的 unsigned int...

我还注意到一些周围的变量没有 value 弹出窗口(?) 而其他变量有。但是这个变量是唯一一个不可能有值的变量。

这怎么可能?

我只有 C# Visual Studio 2010,所以我不知道这个问题存在于其他版本或不同的语言中。如果是这种情况,我会相应地更改标题和标签。

最佳答案

调试时,Visual Studio 会跟踪当前上下文中的每个变量。

考虑以下代码:

void SomeMethod1()
{
int j = 0;
}

void SomeMethod2()
{
int i = 0;
}//Breakpoint on this line.

当程序中断时,当前上下文是SomeMethod2。此时,开发人员无法检查 j 的值是多少。这是因为 int j 在当前上下文中不是变量。

OP 所描述行为背后的实际原因:

Visual Studio checks if the name of the variable exists in the current context and doesn't check if the variable itself exists in the current context.

所以如果我们把SomeMethod1中的变量j的名字改成i,就可以一下子看到它的“值”了。想象一下如果 SomeMethod2 中的 i 是一个字符串会有多奇怪:

enter image description here

你什么时候应该知道这个?

每当您有一段代码时,它不能立即清楚当前上下文是什么。我在下面的一段代码中遇到了这个问题:

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;
}

我正在调试方法 2,但我想我也可以查看方法 1 的变量。但事实并非如此,因为方法 1 有其自己的上下文。

关于c# - 调试时 Visual Studio 显示错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18126642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com