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

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

visual studio截图 - 调试

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

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

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

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

它更多地从函数中获取第一个值 – >执行值 – >获取第二个值 – > …

因此该值为null,因为您尚未使用该对象。

ChangeTracker.Entries()更改为ChangeTracker.Entries().ToList() ,我认为您将看到更改。

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