C#怎么可以假==真?见图

Arr*_*n S 27 .net c# debugging visual-studio

我刚遇到了一个令人难以置信的错误.false == true您需要确认/调试此行为的信息是什么?我从来没有见过这样的东西.

在此输入图像描述

  • VS2008 sp1
  • 调试模式| 任何Cpu
  • IIS 7.5

编辑:我做了一个干净 - >重建,仍然是一样的.

这是汇编和寄存器.我不知道怎么读这个,但也许它可以帮助别人.

Dar*_*rov 42

我认为您的PDB文件不同步,并且您在实际执行的内容和Visual Studio看到的行号方面存在差异.尝试重建.我们都知道这是不可能拥有的true = false,或者我们所知道的世界可能会改变:-)

  • 回到VB6,我实际上有'true = false`.在同一个调试会话期间,所有错误处理都失败了,执行通过每个`if`语句的每个可能的分支,当天使从天上掉下来时天空变暗......那天必须重新安装VB 3次; 从来没有弄清楚是什么造成的......啊,好日子...... (14认同)
  • «或者我们所知道的世界可能会改变»→也许有人找到了这个问题?!:○ (2认同)

Mar*_*ell 11

它真的抛出了错误吗?如果你输入错误的pdb,调试器通常可以突出显示错误的行,所以这可能是一个错误的引导.使用"立即"窗格重现测试后更改值也很简单.

如果result是字段或捕获的变量,它也可以由外部代码设置(可能在另一个线程上).

如果result不是bool您自己的自定义类型,您可以覆盖==,或提供自定义true/ false运算符.


Meh*_*ari 7

可能源与运行版本不对应,或者调试器中存在错误.


Jar*_*Par 6

部分问题在于您假设调试器100%正确.它实际上不是并且受到许多情况的影响,其中值可能具有不正确或误导性的显示.最常见的原因是......

  • PDB文件不匹配.这通常会导致调试器中至少出现一个关于不匹配源文件的警告对话框,但并非总是如此
  • 基础表达式评估程序的简​​单数据检查或显示错误.在这种情况下不太可能,因为它是一个简单的本地和原始类型.
  • 导致数据显示不正确的优化.

但事实上它几乎肯定不是假的.验证这一点的最简单方法是使用Debug.WriteLine调用将值输出到输出窗口.