Visual Studio调试器显示错误的值(null应该有值)
我被卡住了,为什么会这样? 代码字面上说实体!= null但调试器认为它是null。 到底是怎么回事?
我已经改为x86,重新编译,清理,甚至重新启动电脑。 代码总是这样,没有if语句不同的版本。 如果我继续,我不会得到空指针exception。
当在方法中先前声明了具有相同名称的变量时,我遇到了同样的问题。 在这种情况下,调试器只会“注意到”第一个变量。 它对实际代码执行没有影响。
我不确定,但我认为这是foreach
循环与ChangeTracker.Entries()
函数结合使用的ChangeTracker.Entries()
。
foreach函数是按需收集一些数据。 因此,它不会从ChangeTracker.Entries()
获取所有数据,然后使用每个值启动循环。
它更多地从函数中获取第一个值 – >执行值 – >获取第二个值 – > …
因此该值为null,因为您尚未使用该对象。
将ChangeTracker.Entries()
更改为ChangeTracker.Entries().ToList()
,我认为您将看到更改。
查看yield
命令以更深入地了解迭代器函数的工作原理。 (逻辑有点令人困惑:))