Visual Studio调试器显示错误的值(null应该有值)

Wou*_*hut 13 c# visual-studio-2012

我被困了,为什么会这样?代码字面上说实体!= null但调试器认为它是null.到底是怎么回事?

visual studio截图 - 调试

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

Art*_*ski 6

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


小智 0

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

foreach函数是按需收集一些数据。因此,它不会获取所有数据ChangeTracker.Entries(),然后使用每个值启动循环。

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

所以该值为 null,因为您还没有使用该对象。

改变你的ChangeTracker.Entries()样子ChangeTracker.Entries().ToList(),我想你会看到变化。

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