【发布时间】:2018-08-27 18:18:25
【问题描述】:
注意:我明白什么是空引用异常,但我只是不明白为什么会得到它。
原文:
我有一门课,SpecialCases。这个类有一个属性DataArray,它是一个数组。
我实例化一个对象,然后初始化数组,但是当我尝试设置数组的各个元素时,我得到一个空引用异常。
Private Sub btn_AddtoKeyManager_Click(sender As Object, e As EventArgs) Handles btn_AddtoKeyManager.Click
Dim SC_Additem As New SpecialCases
SC_Additem.DataArray() = New String(3) {}
SC_Additem.DataArray() = {cmb_authtypes.SelectedText, txt_URL.Text, txt_Username.Text, txt_password.Text}
End Sub
事实证明我实际上无法理解有关数组的某些内容,因为我尝试在初始化时设置值并且效果很好:
Private Sub btn_AddtoKeyManager_Click(sender As Object, e As EventArgs) Handles btn_AddtoKeyManager.Click
Dim SC_Additem As New SpecialCases
SC_Additem.DataArray() = New String(3) {cmb_authtypes.SelectedText, txt_URL.Text, txt_Username.Text, txt_password.Text}
End Sub
那么之后:
SC_Additem.DataArray() = New String(3) {}
数组初始化有4个元素,所有元素都没有。
然后我尝试将这些元素中的每一个都设置为某个值。 数组是空的,但我一直在处理带有空元素的数组。
我不想引用一个空元素。我没有做类似的事情:
SC_Additem.DataArray() = New String(3) {}
aVar = Sc_additem.DataArray(2)
如果我做了类似的事情,那么我会期待一个空引用异常,但我没有这样做。
【问题讨论】:
-
错误出现在哪一行?
-
Sc_Additem.DataArray() = {cmbauthtypes...}
-
在该行放置一个断点并检查该行中的各种标识符。当有一个对象为空时,就会发生该异常。检查您的控件(不太可能)或
DataArray属性的代码,以确保它正在设置支持变量 -
语法无效,() 括号不应该在那里。因此,可能出错的一件事是没有注意到编译器抱怨它,然后仍在运行具有 NRE 错误的旧版本。
标签: arrays vb.net nullreferenceexception