Arrays 有没有办法在vb.net中获取数据时生成一个空数组并将其增长?

Arrays 有没有办法在vb.net中获取数据时生成一个空数组并将其增长?,arrays,vb.net,listview,Arrays,Vb.net,Listview,我一直在做一个项目,并试图为数据创建一个新的数组。我已经尝试过用Dim Name()作为String={}生成一个空数组。我使用的是ListView,按照我的方式,我在处理数据时有一些空白点。这是我当前的代码: Sub English(ByVal Country() As String, ByVal Language() As String) rbDisplayallData.Checked = False lstResults.Visible = True l

我一直在做一个项目,并试图为数据创建一个新的数组。我已经尝试过用Dim Name()作为String={}生成一个空数组。我使用的是ListView,按照我的方式,我在处理数据时有一些空白点。这是我当前的代码:

    Sub English(ByVal Country() As String, ByVal Language() As String)

    rbDisplayallData.Checked = False
    lstResults.Visible = True
    lstResults.Items.Clear()
    lstResults.Columns.Clear()

    With lstResults
        .View = View.Details
        .Columns.Add("English Speaking Countries", 200, HorizontalAlignment.Left)
    End With

    For i = 0 To 181
        Dim EnglishSpeakingCountries(i) As String
        If Language(i) = "English" Then
            EnglishSpeakingCountries(i) = Country(i)

        End If
        lstResults.Items.Add(New ListViewItem({EnglishSpeakingCountries(i)}))

    Next
End Sub

我在想,如果我要压缩这个数组,或者用相同的数据创建一个新的数组,它会解决这个问题


如果您有解决方案,请告诉我。

有两件事可以被视为空数组

  • 没有元素的数组,即
    长度为零
  • 一种数组,其中每个元素都是
  • 所有数组都是固定长度的。创建具有特定数量元素的数组后,它始终具有该数量的元素。您可以使用
    ReDim Preserve
    Array.Resize
    ,但在这两种情况下,实际发生的是创建一个新数组,并从旧数组复制元素。新数组被分配给同一个变量,但在引用旧数组的任何地方,它仍将具有相同数量的元素。请尝试运行此代码,以查看其运行情况:

    Dim a1 As String() = {}
    Dim a2 As String() = {"First", "Second", "Third"}
    
    Dim b1 = a1
    Dim b2 = a2
    
    Console.WriteLine(a1.Length)
    Console.WriteLine(a2.Length)
    Console.WriteLine(b1.Length)
    Console.WriteLine(b2.Length)
    
    Console.WriteLine()
    
    ReDim Preserve a1(2)
    Array.Resize(a2, 6)
    
    Console.WriteLine(a1.Length)
    Console.WriteLine(a2.Length)
    Console.WriteLine(b1.Length)
    Console.WriteLine(b2.Length)
    
    Console.ReadLine()
    
    输出:

    0 3 0 3 3 6 0 3 可以更改为:

    Dim englishSpeakingCountries As New List(Of String)
    
    For i = 0 To 181
        If Language(i) = "English" Then
            englishSpeakingCountries.Add(Country(i))
            lstResults.Items.Add(Countries(i))
        End If
    Next
    

    请注意,您只是将项目添加到两个集合中。我想问题是你是否真的需要这些额外的收藏。如果以后确实要使用它,则需要将其分配给成员变量,而不是局部变量。如果你以后不需要它,那就根本不要创建它。正如我所说,您已经在
    列表视图中向集合添加了项。也许这就是你所需要的,但是你没有提供足够的信息让我们知道。

    对不起,我是编程新手,现在对编程的了解还很慢。我正在运行你发布的代码,得到0,3,0,2,3,6,0,3。我真的不明白6是从哪里来的。我感谢你的帮助。为了做到这一点,我需要对你的建议做更多的研究。我的答案已经更新为前面提到的“更多”。对不起,谢谢你的帮助。我将对List(Of T)和Array.Resize做更多的研究。我需要更好地做研究,但我不知道从哪里开始。谢谢,我已经发布了我所有的代码,以及我遇到的问题的图片。将来我应该做些什么,还是只提供代码片段?你应该花些时间在帮助中心学习如何发布一个好的问题,特别是创建一个最小的、可验证的示例。你没有必要发布任何其他东西,因为我已经提供了你所需要的一切。您的<代码> ListVIEW>代码>中的空白项是由于在<代码>之外添加项(如果Dim englishSpeakingCountries As New List(Of String) For i = 0 To 181 If Language(i) = "English" Then englishSpeakingCountries.Add(Country(i)) lstResults.Items.Add(Countries(i)) End If Next