Array的问题 - NullReferenceException未处理 - VB.NET

时间:2014-06-26 15:57:00

标签: arrays vb.net

我基本上是在尝试创建一个数组来将选中的项目导出到word文档中。但我收到一个错误说

“对象引用未设置为对象的实例。”

“Referenced'SelectedMutualFunds'的值为'Nothing'

以下是我的代码:

Public Class ExportFunds
      Public SelectedMutualFunds() As String

 Private Sub ExportFundOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportFundOkButton.Click
           Dim i As Integer
    Dim array_Counter As Integer
    array_Counter = 0
    For i = 0 To ExportFundCheckedListBox.Items.Count() - 1
        If ExportFundCheckedListBox.GetItemCheckState(i) = CheckState.Checked Then
            SelectedMutualFunds(array_Counter) = ExportFundCheckedListBox.Items(i).ToString
            array_Counter += 1
        End If
    Next
    Me.Close()
End Sub

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您需要为字符串数组提供长度

 Public SelectedMutualFunds() As String
在使用之前

到ExportFundOkButton_Click中的以下内容,最好是在for循环之前。

 Redim SelectedMutualFunds(ExportFundCheckedListBox.Items.Count() - 1)

答案 1 :(得分:0)

您可以将其转换为单行并同时修复NullReference异常:

 Private Sub ExportFundOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportFundOkButton.Click
     SelectedMutualFunds = ExportFundCheckedListBox.Items.Where(Function(i) i.CheckState = CheckState.Checked).Select(Function(i) i.ToString()).ToArray()
     Me.Close()
End Sub

或者,稍长但更容易阅读:

Private Sub ExportFundOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportFundOkButton.Click
     SelectedMutualFunds = ExportFundCheckedListBox.Items.
                Where(Function(i) i.CheckState = CheckState.Checked).
                Select(Function(i) i.ToString()).
                ToArray()
     Me.Close()
End Sub