【问题标题】:Vb.net Object's property, which is an array, null reference exceptionvb.net Object的属性,是一个数组,空引用异常
【发布时间】: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


【解决方案1】:

也许这取决于您的特殊课程。使用Property 而不是其中的变量。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多