我有以下奇怪的情况:Pair
是包含Widget
和Int32
的值类型,GetNonNullWidget()
返回特定的非空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
,带有红色警告和消息
“ '' 一片空白 ”。
如果我在方法中用lambda封装第三行,那么一切正常。
我清楚地理解lambdas甚至比我想象的还要少;任何人都可以解释这里发生了什么?谢谢!
编辑:
要明确:GetNonNullWidget()
返回Widget
,并且在调试时可以检查它是非空的。
答案 0 :(得分:0)
The as
operator should never throw a NullReferenceException,这就是为什么我根据您当前的描述相信调试器出了问题。
验证以下内容:
如果这一切都正确,请尝试下列一项或多项措施: