只是为了好奇
我的代码存在这个问题。
e
被评估为false
,(我知道通过查看数据库中的数据会导致错误),但if语句并不关心它,并假设为真,并试图抛出异常。
任何想法为什么?
修改
没有;在第16行的末尾。
值false
是正确的,我检查了数据库并且是
正确的是false
,这是预期的
{}
工作正常。但我想知道为什么不这样做
工作x64
下,我无法进行更改答案 0 :(得分:5)
我最近在SO上看到了一个非常相似的问题,但我找不到它。在我不在的时候,这是我记得的,以防它有助于缓解你的想法:
症状是:
原因与启用Debug的版本中发出的额外操作码有关,以支持逐步调试。为此类版本发出的实际IL代码包括额外的“无操作”IL命令,除了存在之外什么都不做,并且在执行“实际”操作之前和/或之后单步执行代码以中断执行时使用。
在这种情况下,IDE只是对基于它试图逐步完成的IL代码的“当前”代码行感到困惑。应该有额外的操作代码,但是调试器IDE错误地将它与前一行代码相关联。黄色突出显示在错误的位置。
我不记得导致这种情况发生的确切条件(原始问题的答案实际上已经挖到IL来解释它,希望其他人可以找到这个问题!)。添加大括号会导致编译器专门发出无操作代码来表示大括号,这就是问题消失的原因。
答案 1 :(得分:0)
偶然 - 是否有另一个变量在某个地方定义了名为'e'的不同范围,导致编译器对使用哪个值感到困惑?尝试将“e”更改为其他名称。