1

为什么下面粘贴的代码会给我一个空引用异常?因为我似乎根本无法找出原因。

注意:文本框具有正确的名称,并且当我收到异常时它们不是空的。

我的代码:(我突出显示了错误所在的行)

txtGuid.BackColor = Color.White
    txtName.BackColor = Color.White
    If txtGuid.Text <> "" And txtName.Text <> "" Then
        Dim name As String = txtName.Text
        Dim guid As String = txtGuid.Text
        **frmWhitelist.names.Add(name)**
        frmWhitelist.guids.Add(guid)
        Me.Close()
    Else
        If txtGuid.Text = "" Then
            txtGuid.BackColor = Color.Red
        End If
        If txtName.Text = "" Then
            txtName.BackColor = Color.Red
        End If
        lblError.Text = "Please check your input in the red-colored fields."
    End If

调用堆栈:

> DayZAdminApp.exe!DayZAdminApp.inptBoxWhitelist.btnOk_Click(Object sender, System.EventArgs e) Line 15 + 0x3d bytes Basic

调试时,txtGuid.texttxtName.text都在我的 Locals 选项卡中具有文本值。

PS:如果这是由于我正在尝试 2 将项目添加到另一个表单上的公共变量,我该如何解决这个问题?

PPS:frmWhitelist.namesandfrmWhitelist.guids声明如下:

Public names, guids As List(Of String)

4

1 回答 1

2

这些列表是Nothing因为您尚未初始化它们。

所以你在这里得到一个例外:

frmWhitelist.names

这避免了异常:

Public names As New List(Of String)
Public guids As New List(Of String)

您只是在这里声明它们:

Public names, guids As List(Of String)

Nothing即使他们被宣布,他们仍然在这一点上。

于 2013-04-13T21:30:05.173 回答