Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在vb 2010中向数组添加元素_Arrays_Vb.net - Fatal编程技术网

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

Arrays 如何在vb 2010中向数组添加元素,arrays,vb.net,Arrays,Vb.net,嘿,我有个好消息,我已经接近了解我需要做什么了。我已经看到了很多数据,可以在以后使用。但现在我只需要或多或少的复习一下这方面的课程 我需要将元素写入数组。我知道那部分有点。。。。。但在运行XML文件之前,我不知道数组长度。因此,该文件可能有1到9000个以上(dbz)。我知道我需要一个for循环,我只是不知道如何很好地编写for循环 我从书中得到了一个代码,但我不知道如何编辑它 Dim arraytester() As String For i As Integer = 0 To arrayte

嘿,我有个好消息,我已经接近了解我需要做什么了。我已经看到了很多数据,可以在以后使用。但现在我只需要或多或少的复习一下这方面的课程

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

我从书中得到了一个代码,但我不知道如何编辑它

Dim arraytester() As String
For i As Integer = 0 To arraytester.Length - 1
    'little lost here 
Next
那么我如何绕过arraytester呢?如果我不知道我正在处理的文件的长度,那么长度就是一个问题

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

试试这个:

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文件中的项目数量,也不需要对数组进行尺寸标注或重新尺寸标注,因为
列表(字符串)
将根据需要增长

注意:.NET2.0及更高版本的通用数据结构比数组结构甚至.NET1.x
ArrayList
数据结构更高效、更易于使用

现在,如果要循环查看
mylist
,可以执行以下操作:

For Each item As String In mylist
    MessageBox.Show(item)
Next
试试这个:

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文件中的项目数量,也不需要对数组进行尺寸标注或重新尺寸标注,因为
列表(字符串)
将根据需要增长

注意:.NET2.0及更高版本的通用数据结构比数组结构甚至.NET1.x
ArrayList
数据结构更高效、更易于使用

现在,如果要循环查看
mylist
,可以执行以下操作:

For Each item As String In mylist
    MessageBox.Show(item)
Next

在VB中,有多种方法可以调整数组的大小(请参见
ReDim
),但最好使用
System.Collections.Generic.List(字符串)
,直到收集完所有元素(您可以用数组中想要的任何元素类型替换字符串),然后,如果需要将结果转换为数组,可以将其转换为数组

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()

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

在VB中有调整数组大小的方法(请参见
ReDim
),但可能最好使用
System.Collections.Generic.List(字符串)
直到收集完所有元素(您可以将字符串替换为数组中您想要的任何元素类型),然后如果需要将结果转换为数组,您可以将其转换为数组

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()

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

如果使用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

如果使用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


根据分配指令的具体程度,考虑使用<代码> ARAYLISTAB/COD>(<代码> Myal.Addit(Toice)< /代码>);然后,如果需要,可以在以后进行转换:
arraytester=myAL.ToArray
。在网络中有比数组更好的集合。你能使用
列表(字符串)
.Add()
方法吗?然后这个长度就变得不相关了。这是一个要求你使用数组的类吗?是的,我必须使用一个数组,就像上面的数组一样。取决于赋值指令的具体性,考虑使用<代码> ARARYLIST/<代码>(<代码> Myal.Addit(Toice)< /代码>);然后,如果需要,可以在以后进行转换:
arraytester=myAL.ToArray
。在网络中有比数组更好的集合。你能使用
列表(字符串)
.Add()
方法吗?然后长度就变得无关紧要了。这是一个需要使用数组的类吗?是的,我使用了一个类似于上面的数组。为什么要使用LINQ,但使用
XmlDocument
而不是
XDocument
?我会使用它,但我对LINQ没有经验。我不能用它来上课(@HankBates:我在问tinstaafl。为什么你要使用LINQ,然后使用
XmlDocument
而不是
XDocument
?我会使用它,但我对LINQ没有经验。我不能在这个类中使用它:(@HankBates:我在问tinstaafl。@JohnSaunders-answer更新为使用
使用
块。试图编辑此内容以将其用于我的程序。谢谢您的帮助。仅供参考,您不应使用
new XmlTextReader()
new XmlTextWriter()
。自.NET 2.0以来,它们一直被弃用。请使用
XmlReader.Create()
XmlWriter.Create()
取而代之。@JohnSaunders-谢谢,没有意识到这些类已被弃用,已更新以反映这一点。谢谢。@JohnSaunders-answer更新为使用
使用
块来使用
。试图编辑此项以将其用于我的程序。谢谢您的帮助。仅供参考,您不应使用
新的XmlTextReader()
新建XmlTextWriter()
。自.NET 2.0以来,它们已被弃用。请改用
XmlReader.Create()
XmlWriter.Create()
。@JohnSaunders-谢谢,没有意识到这些类已弃用,已更新以反映这一点。谢谢。