我想知道您之前是否遇到过此错误: 在单行IF上,条件返回FALSE,但随后执行进入TRUE部分。
我在这里做错了吗? retries
和errorTolerance
都属于Integer
类型,从下面的屏幕截图中,retries
小于errorTolerance
。但它仍然执行True
部分的声明。
这一直搞砸了我的程序,所以我所做的就是将Throw New Exception
放在另一行,然后用End If
关闭,它就可以了。
我想我的问题是我以前的代码出了什么问题?
答案 0 :(得分:1)
禁用优化以确保代码行与相应的编译指令之间存在明确的线性对应关系。
如果这是发布模式编译,retries
只是一个超出范围的局部变量,编译器可能刚刚优化了在最初保存retries
的寄存器中存储增量值,但在检查表达式时仍然使用该寄存器。
要确认这一点,您将看到retries
和errorTolerance
在发布模式下具有相同的值,并且retries
在调试模式下重新编译后具有更大的值1。单步检查变量。
答案 1 :(得分:1)
由于我不能继续编码,我使用常规的If...End If
块。 Visual Studio和编译器完美地运行代码,虽然它让我想知道为什么这个表达式阻碍了VS。