gpt4 book ai didi

c# - 在 If 语句中评估 Bool 错误

转载 作者:太空狗 更新时间:2023-10-30 01:05:59 24 4
gpt4 key购买 nike

纯属好奇

我的代码有这个问题。

enter image description here

e 被评估为 false,(我知道通过查看数据库中的数据它会变得错误)但是 if 语句不关心这一点,并且假设这是真的,并试图抛出异常。

有什么想法吗?

编辑:

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

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

  • 没想到的是得到了异常
  • 是的,{} 工作正常。但我想知道为什么不是这样工作。
  • 是的,清理、构建、重建,一切,并保持一致
  • 不,我不在调试时更改代码。我的解决方案是在 x64 下,我无法进行更改

最佳答案

我最近在 SO 上看到一个非常相似的问题,但我找不到它。在我离开的时候,以下是我从中记住的内容,希望它能帮助您放松心情:

症状是:

  • 通过调试器单步执行代码时停在不应执行的行上
  • 当在调试器之外运行时,这行代码实际上没有执行
  • 在有问题的代码行周围添加大括号可以解决问题。

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

在这种情况下,IDE 只是根据它试图单步执行的 IL 代码搞不清哪一行代码是“当前”代码。额外的操作代码在那里,它应该在那里,但调试器 IDE 错误地将它与前一行代码相关联。黄色突出显示位置错误。

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

关于c# - 在 If 语句中评估 Bool 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com