在 vb.net 中使用 类 的问题
Problems using classes in vb.net
我正在使用 VS 2019 vb.net 实施创建 XML 文件以传输某些数据的过程。
为此,我按照 Microsoft 的建议构建了一系列 类。该过程编译正确,但在 运行 时间生成一个错误,如 'Object reference not set on an object instance.' 到行
FileAbaco.utenti(0).utente(0).strutture(0).struttura.Add(stra)
我不明白我哪里错了。预先感谢您提供的任何帮助。
Dim FileAbaco As New dichiarazioni
FileAbaco.comune = "I608"
Dim uti As New utenti
FileAbaco.utenti.Add(uti)
Dim ute As New utente
FileAbaco.utenti(0).utente.Add(ute)
Dim stre As New strutture
FileAbaco.utenti(0).utente(0).strutture.Add(stre)
Dim stra As New struttura
FileAbaco.utenti(0).utente(0).strutture(0).struttura.Add(stra)
Dim dr As DataRow
dr = DTTrimestrale.Rows(0)
With FileAbaco.utenti(0).utente(0)
.auth = dr.Item("auth".ToString)
.gest_codice_fiscale = dr.Item("gest_codice_fiscale")
.codice_utente = dr.Item("codice_utente")
.gest_cognome = dr.Item("gest_cognome")
.gest_nome = ""
End With
这些是 类:
Imports System.Xml.Serialization
Public Class dichiarazioni
Public comune As String
<XmlElement()>
Public Property utenti As New List(Of utenti)
End Class
Public Class utenti
<XmlElement()>
Public Property utente As New List(Of utente)
End Class
Public Class utente
Public Property auth As String
Public Property gest_codice_fiscale As String
Public Property codice_utente As String
Public Property gest_cognome As String
Public Property gest_nome As String
Public Property strutture As New List(Of strutture)
Public Sub New()
End Sub
Public Sub New(auth As String, gest_codice_fiscale As String, codice_utente As String, gest_cognome As String, gest_nome As String, strutture As strutture)
Me.auth = auth
Me.gest_codice_fiscale = gest_codice_fiscale
Me.codice_utente = codice_utente
Me.gest_cognome = gest_cognome
Me.gest_nome = gest_nome
Me.strutture.Add(strutture)
End Sub
End Class
Public Class strutture
<XmlElement()>
Public Property struttura As List(Of struttura)
Public Sub New()
End Sub
Public Sub New(struttura As struttura)
Me.struttura.Add(struttura)
End Sub
End Class
Public Class struttura
<XmlElement()>
Public Property ID_struttura As String
Public Property insegna As String
Public Sub New()
End Sub
Public Sub New(ID_struttura As String, insegna As String)
Me.ID_struttura = ID_struttura
Me.insegna = insegna
End Sub
End Class
显然是正确的,因为您必须初始化 struttura
,因为它总是 Nothing
。
按如下方式更改此类:
Public Class strutture
<XmlElement()>
Public Property struttura As List(Of struttura)
Public Sub New()
If Me.struttura Is Nothing Then Me.struttura = New List(Of struttura)
End Sub
Public Sub New(struttura As struttura)
If Me.struttura Is Nothing Then Me.struttura = New List(Of struttura)
Me.struttura.Add(struttura)
End Sub
End Class
Otherwise: 否则按上面的方法做(在上面的类中)
Public Property whatEver As New List(Of Whatever)
我正在使用 VS 2019 vb.net 实施创建 XML 文件以传输某些数据的过程。 为此,我按照 Microsoft 的建议构建了一系列 类。该过程编译正确,但在 运行 时间生成一个错误,如 'Object reference not set on an object instance.' 到行
FileAbaco.utenti(0).utente(0).strutture(0).struttura.Add(stra)
我不明白我哪里错了。预先感谢您提供的任何帮助。
Dim FileAbaco As New dichiarazioni
FileAbaco.comune = "I608"
Dim uti As New utenti
FileAbaco.utenti.Add(uti)
Dim ute As New utente
FileAbaco.utenti(0).utente.Add(ute)
Dim stre As New strutture
FileAbaco.utenti(0).utente(0).strutture.Add(stre)
Dim stra As New struttura
FileAbaco.utenti(0).utente(0).strutture(0).struttura.Add(stra)
Dim dr As DataRow
dr = DTTrimestrale.Rows(0)
With FileAbaco.utenti(0).utente(0)
.auth = dr.Item("auth".ToString)
.gest_codice_fiscale = dr.Item("gest_codice_fiscale")
.codice_utente = dr.Item("codice_utente")
.gest_cognome = dr.Item("gest_cognome")
.gest_nome = ""
End With
这些是 类:
Imports System.Xml.Serialization
Public Class dichiarazioni
Public comune As String
<XmlElement()>
Public Property utenti As New List(Of utenti)
End Class
Public Class utenti
<XmlElement()>
Public Property utente As New List(Of utente)
End Class
Public Class utente
Public Property auth As String
Public Property gest_codice_fiscale As String
Public Property codice_utente As String
Public Property gest_cognome As String
Public Property gest_nome As String
Public Property strutture As New List(Of strutture)
Public Sub New()
End Sub
Public Sub New(auth As String, gest_codice_fiscale As String, codice_utente As String, gest_cognome As String, gest_nome As String, strutture As strutture)
Me.auth = auth
Me.gest_codice_fiscale = gest_codice_fiscale
Me.codice_utente = codice_utente
Me.gest_cognome = gest_cognome
Me.gest_nome = gest_nome
Me.strutture.Add(strutture)
End Sub
End Class
Public Class strutture
<XmlElement()>
Public Property struttura As List(Of struttura)
Public Sub New()
End Sub
Public Sub New(struttura As struttura)
Me.struttura.Add(struttura)
End Sub
End Class
Public Class struttura
<XmlElement()>
Public Property ID_struttura As String
Public Property insegna As String
Public Sub New()
End Sub
Public Sub New(ID_struttura As String, insegna As String)
Me.ID_struttura = ID_struttura
Me.insegna = insegna
End Sub
End Class
显然是正确的,因为您必须初始化 struttura
,因为它总是 Nothing
。
按如下方式更改此类:
Public Class strutture
<XmlElement()>
Public Property struttura As List(Of struttura)
Public Sub New()
If Me.struttura Is Nothing Then Me.struttura = New List(Of struttura)
End Sub
Public Sub New(struttura As struttura)
If Me.struttura Is Nothing Then Me.struttura = New List(Of struttura)
Me.struttura.Add(struttura)
End Sub
End Class
Otherwise: 否则按上面的方法做(在上面的类中)
Public Property whatEver As New List(Of Whatever)