单语句VB.NET条件为false时执行if-block? VS 2005的bug?

时间:2012-07-11 04:56:00

标签: asp.net vb.net debugging if-statement visual-studio-2005

我想知道您之前是否遇到过此错误: 在单行IF上,条件返回FALSE,但随后执行进入TRUE部分。

我在这里做错了吗? retrieserrorTolerance都属于Integer类型,从下面的屏幕截图中,retries小于errorTolerance。但它仍然执行True部分的声明。

The statement goes to the TRUE part when the condition is False

这一直搞砸了我的程序,所以我所做的就是将Throw New Exception放在另一行,然后用End If关闭,它就可以了。

我想我的问题是我以前的代码出了什么问题?

2 个答案:

答案 0 :(得分:1)

禁用优化以确保代码行与相应的编译指令之间存在明确的线性对应关系。

如果这是发布模式编译,retries只是一个超出范围的局部变量,编译器可能刚刚优化了在最初保存retries的寄存器中存储增量值,但在检查表达式时仍然使用该寄存器。

要确认这一点,您将看到retrieserrorTolerance在发布模式下具有相同的值,并且retries在调试模式下重新编译后具有更大的值1。单步检查变量。

答案 1 :(得分:1)

由于我不能继续编码,我使用常规的If...End If块。 Visual Studio和编译器完美地运行代码,虽然它让我想知道为什么这个表达式阻碍了VS。