我的代码在我的开发机器上运行得很漂亮,但是当部署到服务器时会抛出空引用异常。所以,我无法单步执行代码,但我已经确定了罪魁祸首。但现在我很困惑。这是代码。问题如下。
Dim certs = From p In persons _
Select New Certificate( _
p.Value, _
New CertificateData.Seminar(thisEvent.Seminar.Name, _
thisEvent.StartDate.Value, _
thisEvent.EndDate.Value, _
thisEvent.Venue.City, _
thisEvent.Venue.State, _
New CertificateData.Instructor( _
staffMember.Name, _
staffMember.Titles, _
instrSignatPath))) _
With {.CertificateId = p.Key}
lblMessage.Text = CStr(certs Is Nothing)
lblMessage.Text = lblMessage.Text + "<br />" + CStr(certs.Count())
在上面的代码中,person是自定义类的字典,而certs是IEnumerable类型。现在这里是窘迫..设置标签的第一行返回False,因此certs不为null。但第二行抛出空引用异常。这怎么可能?
答案 0 :(得分:4)
我的猜测是因为LINQ的延迟执行。只有在您调用Count()
时才会枚举这些项目,如果表达式中的代码失败,您将在那里获得异常。
我非常确定staffMember
,thisEvent
,thisEvent.Seminar
或thisEvent.Venue
中至少有一个为空。