1

我有以下奇怪的情况:Pair是一个持有 aWidget和 an的值类型Int32,并GetNonNullWidget()返回一个特定的 non-null WidgetList<Pair> lstWidgetsAndNumbers是一个列表。

以下代码在初始化局部变量时抛出空引用异常:

编辑:

Widget widgetX = null;        //this throws a NulLRefExn

widgetX = GetNonNullWidget();

var pairX = lstWidgetsAndNumbers.Find(pair => pair.First == widgetX);     //but only if this line exists.

VisulStudio2008 中的本地窗口显示 widgetX红色警告,并显示消息“'' is null”。

如果我将第三行与 lambda 封装在一个方法中,那么一切正常。

我清楚地了解 lambda,甚至比我想象的还要少;谁能解释这里发生了什么?谢谢!

编辑:

需要明确的是:GetNonNullWidget()返回 a Widget,并且它是非空的,可以在调试时检查。

4

1 回答 1

0

as操作员永远不应该抛出 NullReferenceException ,这就是为什么我认为根据您当前的描述,调试器有问题。

验证以下内容:

如果所有这些都正确,请尝试以下一项或多项:

  • 重建您的解决方案。
  • 重新启动 Visual Studio。
于 2012-09-26T09:18:03.090 回答