当我尝试使用我正在处理的这个Web服务时,我得到一个空引用异常。我在对象ipadarticle中有两个字段,名为fullname和tags,它们被声明为列表,因此ipadarticle可以返回多个标签和作者。空引用异常指向
ipadarticle2.FullName.Add(a_var.firstname + " " + a_var.lastname)
ipadarticle2.Tag.Add(a_var.tagtext)
我对vb编程很新,所以我不确定是什么导致了这一点。为了澄清,正在发生的事情是这个存储过程是从db中获取条目,db包含一些文章列表,其中包括其他东西 - 标签和与之关联的作者。由于文章有多个标签和作者,因此每篇文章都有多个条目。当我在Web服务中返回信息时,我正在尝试将其设置为只有一个ipadarticle对象被返回到达文章,然后它包含与每篇文章相关联的多个标签和作者的列表。我正在努力解决这个问题。
Dim lq As New lqDFDataContext
Dim var = lq.mobile_IpadGetSavedArticlesAR(simpuser.UserID, tempParamKW(0), tempParamKW(1), tempParamKW(2), tempParamKW(3), tempParamKW(4), pageNum, pageLen)
Dim ipadarticle2 As New ipadArticle()
For Each a_var In var
If a_var.articleID <> temp Then
If flag = 0 Then
result.add(ipadarticle2)
Dim ipadarticle1 As New ipadArticle()
ipadarticle2 = ipadarticle1
End If
ipadarticle2.ArticleID = a_var.articleID
ipadarticle2.PublishedOn = a_var.publicationdate
ipadarticle2.Title = a_var.title
ipadarticle2.MedAbbr = a_var.medabbr.Replace(" ", "-").ToLower()
ipadarticle2.FullName.Add(a_var.firstname + " " + a_var.lastname)
ipadarticle2.Tag.Add(a_var.tagtext)
flag = 1
Else
ipadarticle2.Tag.Add(a_var.tagtext)
ipadarticle2.FullName.Add(a_var.firstname + " " + a_var.lastname)
flag = 0
End If
temp = a_var.articleID
Next
End If
Return result
ipadArticle类:
Imports Microsoft.VisualBasic
Public Class ipadArticle
Inherits SimpleObject
Public Sub New()
End Sub
Private _ArticleID As Integer
Public Property ArticleID() As Integer
Get
Return _ArticleID
End Get
Set(ByVal value As Integer)
_ArticleID = value
End Set
End Property
Private _Title As String
Public Property Title() As String
Get
Return _Title
End Get
Set(ByVal value As String)
_Title = value
End Set
End Property
Private _PublishedOn As String
Public Property PublishedOn() As String
Get
Return _PublishedOn
End Get
Set(ByVal value As String)
_PublishedOn = value
End Set
End Property
Private _MedAbbr As String
Public Property MedAbbr() As String
Get
Return _MedAbbr
End Get
Set(ByVal value As String)
_MedAbbr = value
End Set
End Property
Private _Tag As List(Of String)
Public Property Tag() As List(Of String)
Get
Return _Tag
End Get
Set(ByVal value As List(Of String))
_Tag = value
End Set
End Property
Private _FullName As List(Of String)
Public Property FullName() As List(Of String)
Get
Return _FullName
End Get
Set(ByVal value As List(Of String))
_FullName = value
End Set
End Property
End Class
答案 0 :(得分:1)
最可能的原因是ipadarticle2中尚未创建对象FullName和Tag(Nothing)。这些应该很可能在类构造函数中创建为新对象。
编辑:
根据发布的类,上述假设是正确的:FullName和Tag定义为List(Of String),但从不创建支持成员。
这可以通过以下两种方式解决:
1)直接在其定义中实例化后备成员变量,即:
Private _FullName As New List(Of String)
2)在构造函数中实例化后备成员变量:
Public Sub New()
_FullName = New List(Of String)
_Tag = New List(Of String)
End Sub
3)如果没有任何内容,则在getter中实例化后备成员变量:
Public Property Tag()As List(Of String) 得到 如果_Tag什么都没有 _Tag =新列表(字符串) 万一 返回_Tag 结束获取
基本上,除了简单数据类型之外的任何变量类型必须先实例化才能使用它们(除非你测试它们是否为Nothingness)。