【发布时间】:2018-11-20 03:35:35
【问题描述】:
在调试时我发现了一些奇怪的东西:
结果 var 在鼠标悬停和手表中都显示为 null,但右侧实际上返回的是非 null 值,正如您在手表中看到的那样。
有什么想法吗?
EDIT:结果变量也在IF语句中声明,如下所示:
if (somethingIsTrue) { var result = xxx; }
else { var result = yyy; }
我将第二个结果重命名为其他结果后,一切都开始正确显示。
【问题讨论】:
-
清理并重建?
-
可能是多重评估的情况?第一次调用为空,将其放入结果中。第二次调用(在 Watch 中显示)获取一个值。
GetCachedData()是做什么的? -
实际上在主 if 块中也定义了结果变量,所以可能这就是导致它的原因。 if (something) { var 结果 = xxx; } 其他 { var 结果 = yyy; } 一旦我将它重命名为 Else 块中的其他东西 - 一切都正确显示。
-
嗯。您可能只是遇到了延迟执行。 blogs.msdn.microsoft.com/charlie/2007/12/10/…
-
@pbrian 不相信这里的问题可能是延迟执行。看看手表,右手表达式确实返回了一个对象实例,而不是一些 IQueryable 或其他东西。看起来更像是美世所说的。
标签: c# visual-studio debugging visual-studio-2017