【问题标题】:VB.NET Add row data to public class / public field of type List(Of T) Object reference not set to an instance of an objectVB.NET将行数据添加到List(Of T)类型的公共类/公共字段对象引用未设置为对象的实例
【发布时间】:2013-04-13 03:33:52
【问题描述】:

我正在尝试将行添加到具有公共字段的公共类中,但出现错误:对象引用未设置为对象的实例

    Public Class EmailRecipient
        EmailAddress As String = ""
        FullName As String = ""
    End Class

    Public Class EmailDetails
        Public FromEmail As String = ""
        Public ToEmails As List(Of Emails) = nothing  
    End Class

    Public Sub SetEmailDetails
        'Populate EmailRecipient Class
        Dim er As New EmailRecipient
        er.EmailAddress = "rodney@norespect.com"
        er.FullName = "Rodney Dangerfield"

        'Populate EmailDetails Class
         Dim ed As New EmailDetails
         ed.FromEmail = "sender@danger.com"   'This works fine
         ed.ToEmails.Add(er)                  'Here error happens
    End Sub

我猜我需要先创建一个 EmailRecipient 类的实例,然后才能向其中添加项目。

不确定如何使用公共类中的公共字段来做到这一点??

这是艰难的一天。我今天早上起床,穿上一件衬衫,一个纽扣掉了下来。我拿起公文包,把手掉了。我害怕去洗手间。

感谢您的帮助:-)

【问题讨论】:

    标签: vb.net class public generic-list


    【解决方案1】:

    我猜我需要创建一个 EmailRecipient 类的实例

    您已经有一个 EmailRecipient 类的实例。那是你的 er 变量。您实际上有两个错误。首先,您将 ToEmails 显式设置为 Nothing:

    作为列表(电子邮件)的公共 ToEmails = 无

    这意味着您的 ToEmails 变量是空引用。它还没有一个实际的对象。

    第二个问题是你不应该得到那个 excpetion,因为这甚至不应该编译。您将 ToEmails 定义为 List(Of Emails),但尝试向其中添加“EmailRecepient”类型的对象。那应该是编译器错误。如果不是,您需要重新打开 Option Strict 或 Option Infer。

    因此,您真正需要的是 List(Of EmailRecipient) 类型的实例。像这样修复错误的代码行:

    Public ToEmails As New List(Of EmailRecipient)
    

    【讨论】:

    • 谢谢 - 将公共变量列表声明为新的并且不将其设置为空解决了问题:-)
    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2020-05-05
    • 2013-01-14
    • 2011-09-22
    相关资源
    最近更新 更多