Arrays 如何在vb 2010中向数组添加元素
嘿,我有个好消息,我已经接近了解我需要做什么了。我已经看到了很多数据,可以在以后使用。但现在我只需要或多或少的复习一下这方面的课程 我需要将元素写入数组。我知道那部分有点。。。。。但在运行XML文件之前,我不知道数组长度。因此,该文件可能有1到9000个以上(dbz)。我知道我需要一个for循环,我只是不知道如何很好地编写for循环 我从书中得到了一个代码,但我不知道如何编辑它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
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.xArrayList
数据结构更高效、更易于使用
现在,如果要循环查看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.xArrayList
数据结构更高效、更易于使用
现在,如果要循环查看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-谢谢,没有意识到这些类已弃用,已更新以反映这一点。谢谢。