C# Visual Studio调试器显示错误的值(应该有值的地方为null)

C# Visual Studio调试器显示错误的值(应该有值的地方为null),c#,visual-studio-2012,C#,Visual Studio 2012,我被卡住了,为什么会这样?代码字面上说是实体!=null,但调试器认为它为null。发生了什么事 我已经改成了x86,重新编译,清理,甚至重新启动了电脑。代码总是这样,没有版本的if语句是不同的。如果我继续,我不会得到一个空指针异常 我不确定,但我认为这是foreach循环与ChangeTracker.Entries()函数结合的结果 foreach函数根据需要收集一些数据。 因此,它不是从ChangeTracker.Entries()获取所有数据,然后用每个值启动循环 更重要的是从函数-->

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


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

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

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

更重要的是从函数-->执行-->中获取第一个值-->获取第二个值-->

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

将您的
ChangeTracker.Entries()
更改为
ChangeTracker.Entries().ToList()
,我想您会看到一个更改


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

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

我不知道为什么会发生这种情况,但是如果将for循环重构为Linq查询,是否会出现相同的错误?当您检查
实体时,
立即窗口会说什么?我以前见过这种情况,彻底清理您的bin和obj文件夹您可以尝试完全限定
实体
可能是代码优化问题?在Project->Properties->Build中取消选中优化代码?