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

我想知道你以前是否遇到过这个bug:

在单行IF上,条件返回FALSE,但随后执行进入TRUE部分.

我在这里做错了吗? retries和errorTolerance都是Integer类型,从下面的屏幕截图中,重试次数小于errorTolerance.但它仍然执行True部分的声明.

这一直搞砸了我的程序,所以我所做的就是把Throw New Exception放在另一行,然后关闭End If并且它有效.

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

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

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

要确认这一点,您将看到retries和errorTolerance在发布模式下具有相同的值,并且在调试模式下重新编译后重试值会大一.逐步检查线条时,单独检查变量.

点赞