在If语句中评估了Bool错误

Gon*_*o.- 4 .net c# if-statement boolean visual-studio-2010

只是为了好奇

我的代码有这个问题.

在此输入图像描述

e被评估为false,(并且我知道通过查看数据库中的数据会变得错误),但if语句并不关心它,并假设为true,并且正在尝试抛出异常.

有什么想法吗?

编辑:

  • 没有; 在第16行的末尾.

  • false是正确的,我检查了数据库并且正确得到了false,这是预期的

  • 不期望的是得到例外
  • 是的,{}工作正常.但我想知道为什么这样不起作用.
  • 是的,清洁,构建,重建,一切,并获得相同
  • 不,我在调试时不更改代码.我的解决方案在x64,我无法做出改变

Mic*_*eld 5

我最近在SO上看到了一个非常相似的问题,但我找不到它.在我不在的时候,这是我记得的,如果它有助于缓解你的想法:

症状是:

  • 通过调试器逐步执行代码停止在不应执行的行上
  • 在调试器外部运行时,实际上不执行代码行
  • 在有问题的代码行周围添加花括号可以解决问题.

原因与启用Debug的版本中发出的额外操作码有关,以支持逐步调试.为此类版本发出的实际IL代码包括额外的"无操作"IL命令,除了存在之外什么都不做,并且在执行"真实"操作之前和/或之后单步执行代码以中断执行时使用.

在这种情况下,IDE只是对基于它试图逐步完成的IL代码的"当前"代码行感到困惑.应该有额外的操作代码,但是调试器IDE错误地将它与前一行代码相关联.黄色突出显示在错误的位置.

我不记得导致这种情况发生的确切条件(原始问题的答案实际上已经挖入IL来解释它,希望其他人可以找到这个问题!).添加大括号会导致编译器专门发出无操作代码来表示大括号,这就是问题消失的原因.