如何在vb 2010中向数组添加元素

时间:2013-10-28 17:26:23

标签: arrays vb.net

嘿,我得到了好消息,我已经接近了解我需要做什么。我见过很多我以后可以使用的数据。但是现在我只需要或多或少地在这里获得进修课程。

我需要将元素写入数组。我知道那部分......但是在运行XML文件之前我不会知道数组的长度。所以该文件可能有1到超过9000(dbz)。我知道我需要一个for循环,我只是不知道如何很好地编写for循环。

我从书中得到了一些代码,但我看不出我是如何编辑它的。

Dim arraytester() As String
For i As Integer = 0 To arraytester.Length - 1
    'little lost here 
Next

那么我如何绕过arraytester.Length是一个问题,如果我不知道正在使用的文件的长度。

我如何将它添加到数组中,它只在我的书中显示输出。 (或者我可能只是失去了它)

3 个答案:

答案 0 :(得分:7)

试试这个:

Dim mylist As New List(Of String)
Using document As XmlReader = XmlReader.Create("c:\PathToYourXmlFile.xml")
    While (document.Read())
        mylist.Add(document.ReadInnerXml.ToString)
    End While
End Using

由于您使用的是While循环结构,因此您不需要知道XML文件中的项目数量,也不需要对数组进行维度或重新维度,因为{{1}将根据需要增长。

注意:.NET 2.0及更高版本的通用数据结构比数组结构甚至.NET 1.x List(Of String)数据结构更高效,更易于使用。

现在,如果你想循环遍历ArrayList,那么你可以这样做:

mylist

答案 1 :(得分:3)

有很多方法可以在VB中调整数组的大小(参见ReDim)但是在收集所有元素之前使用System.Collections.Generic.List(Of String)可能更好(你可以用你想要的任何元素类型替换String)在您的数组中),然后您可以将结果转换为数组,如果您需要它作为数组。

Dim arraytester() As String
Dim accumulator As New System.Collections.Generic.List(Of String)
Do While Not input.EndOfStream
   accumulator.Add(input.ReadLine())
Loop
arraytester = accumulator.ToArray()

鼓励这样做而不是重新调整数组大小以添加每个元素,因为每次添加元素时都必须重新分配整个数组。

答案 2 :(得分:1)

如果您使用LINQ,您可以构建xmlnodes集合并将其转换为数组而不知道数组的上限:

    Dim xdoc As New Xml.XmlDocument()
    xdoc.Load("test1.xml")
    Dim nodes() As Xml.XmlNode = (From var In xdoc.SelectNodes("doc/members/member")
                                  Let node = DirectCast(var, Xml.XmlNode)
                                 Select node).ToArray