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