Arrays 有没有办法在vb.net中获取数据时生成一个空数组并将其增长?
我一直在做一个项目,并试图为数据创建一个新的数组。我已经尝试过用Dim Name()作为String={}生成一个空数组。我使用的是ListView,按照我的方式,我在处理数据时有一些空白点。这是我当前的代码: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
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