c#Visual Studio似乎遵循不正确的代码路径

时间:2011-06-19 09:01:58

标签: c# visual-studio-2010 path

以下是一个从相当大的应用程序中提取的小片段,以简化我的问题。我之前提交了这个问题,但是在我设法编辑我的问题之前,我的不良措辞导致它被关闭了。

这是我添加了一些日志记录行的当前片段。

int i = 0; 
Console.WriteLine("Before brackets");
if (i < 0) 
{ 
      Console.WriteLine("Inside brackets");
      return MyArray[i]; 
} 

当我使用VS调试时,我看到:

i set to 0
if evaluates as false (when I hover over it in VS) 
In Output: Before brackets

然后调试器在括号内执行 并执行return MyArray[i]但是当我进入{{{I}时,我在输出中看不到Inside brackets 1}}行。

这种行为显然(对我而言)是错误的,我想知道是否有其他人遇到过类似的事情。

我使用的是Windows XP,64位计算机,带有VS10和.Net4.0。

月球

ADDITIONAL1

Henk已经要求我提供一个“控制台应用程序”,我在下面做了。但是,正如我怀疑的那样,它并没有显示出这个问题。我相信还有其他东西(线程?)在我的真实应用中引起了我的问题 - 我显然可以发布。我意识到我没有给你一个明确定义的问题 - 如果可以的话,我愿意。这就是为什么我要问这个问题 - 因为它与有类似事情的人打成了关系。为了良好的顺序,这里是控制台版本,没有出现问题。我觉得把它放在这里会增加混乱......

return MyArray[i]

ADDITIONAL 2

似乎我的问题不是执行路径只是VS调试器的错误路径之一。即好像我要进入括号内部,因为调试器会在最后一个语句中执行,但实际上我得到的结果看起来是正确的。

4 个答案:

答案 0 :(得分:3)

我在谷歌网络搜索发现的提示后设法解决了这个问题。我似乎在"Optmise Code"模式下运行调试器。这是我早期检查的内容,但我没有发现,尽管我已经在调试模式中取消选择此选项 - 我在标准工具栏中选择了“发布”。当我切换到“Debug”时,问题就消失了。

答案 1 :(得分:1)

我一定错过了什么,但这是非常逻辑的?

  • 我被设为零。
    • 我不低于 零。
    • 括号内没有 输出。
这是合乎逻辑的,不是吗? 使用调试器逐步执行代码。你会发现它是有道理的。

答案 2 :(得分:1)

您确定您的if语句不符合以下条件:

if (i < 0)
    Console.WriteLine(...);
    return MyArray(i);

请注意误导性缩进和缺少括号。

答案 3 :(得分:0)

如果i = 0i < 0为假。如果将条件设置为i <= 0,则执行条件。