我有以下奇怪的情况:Pair
是一个持有 aWidget
和 an的值类型Int32
,并GetNonNullWidget()
返回一个特定的 non-null Widget
。List<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
,并且它是非空的,可以在调试时检查。