【问题标题】:Visual Studio debugger shows wrong value (null where there should be a value)Visual Studio 调试器显示错误值(应该有值的地方为 null)
【发布时间】:2015-11-11 21:11:15
【问题描述】:

我被卡住了,为什么会这样?代码字面意思是实体!= null 但调试器认为它是空的。怎么回事?

我已经改成 x86,重新编译,清理,甚至重启了电脑。而且代码总是这样,没有if语句不同的版本。如果我继续,我不会得到空指针异常。

【问题讨论】:

  • 我不知道为什么会这样,但是如果你将 for 循环重构为 Linq 查询,你会得到同样的错误吗?
  • 当您查看entity 时,Immediate Window 是什么意思?
  • 我以前见过这个,彻底清理你的 bin 和 obj 文件夹
  • 你可以试试完全合格的entity
  • 可能是代码优化问题?在 Project -> Properties -> Build? 中取消优化代码?

标签: c# visual-studio-2012


【解决方案1】:

当在方法的前面声明了同名的变量时,我遇到了同样的问题。 在那种情况下,调试器只会“注意到”第一个变量。它对实际代码执行没有影响。

【讨论】:

    【解决方案2】:

    我不确定,但我认为这是foreach 循环结合ChangeTracker.Entries() 函数的效果。

    foreach 功能是按需收集一些数据。 所以它不是从ChangeTracker.Entries() 获取所有数据,然后用每个值开始循环。

    更多的是从函数中获取第一个值 --> 执行值 --> 获取第二个值 --> ...

    所以值是null,因为你还没有使用过这个对象。

    将您的ChangeTracker.Entries() 更改为ChangeTracker.Entries().ToList(),我想您会看到变化。

    查看yield 命令以更深入地了解迭代器函数的工作原理。 (逻辑有点混乱:))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多