4

我想知道你以前是否遇到过这个错误:在单行 IF 中,条件返回 FALSE,但随后执行继续到 TRUE 部分。

我在这里做错了吗?retries并且errorTolerance都是类型Integer,并且从下面的屏幕截图中,retries小于errorTolerance. 但它仍然执行该True部分的语句。

当条件为 False 时,语句转到 TRUE 部分

这一直在搞砸我的程序,所以我所做的就是将它Throw New Exception放在另一行并关闭End If它并且它可以工作。

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

4

2 回答 2

1

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

于 2012-07-12T07:15:42.257 回答
1

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

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

为了确认这一点,您将看到retrieserrorTolerance在发布模式下具有相同的值,并且retries在调试模式下重新编译后具有更大的值。逐行检查时分别检查变量。

于 2012-07-11T15:04:30.757 回答