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

时间:2015-11-11 21:11:16

标签: c# visual-studio-2012

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

visual studio screenshot - debugging

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

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

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

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

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