代码之家  ›  专栏  ›  技术社区  ›  Antony

IEnumerable不为null,但调用Count()会导致异常

  •  2
  • Antony  · 技术社区  · 14 年前

    我有一些代码在我的开发机器上运行得很好,但是当部署到服务器时抛出了空引用异常。所以,我不能单步通过密码,但我已经锁定了罪犯。但现在我很困惑。这是密码。问题如下。

    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。但是第二行抛出一个空引用异常。这怎么可能?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Lucero    14 年前

    Count() 如果表达式中的代码失败,就会出现异常。

    staffMember thisEvent , thisEvent.Seminar thisEvent.Venue 为空。