vb.net 控制台应用程序合并未知数量的 XML 文件,添加到集合时出现问题

vb.net console app merge unknown number of XML files, problems adding to collection

我正在尝试创建一个允许用户将文件 drag/drop 文件放入控制台的应用程序。控制台通过中介将路径馈送到 XmlTextReader 的集合中,然后根据 XmlReader 集合 .count 在 for 循环中填充 DataSet 集合,最后合并整个事情。 好吧,一切都很好,花花公子,直到我尝试 .addXmlTextReader 列表,然后它以 error report from vbstudio

的形式抛出一个 NullReferenceException

我试图调查,但就是不明白。 我希望下面的代码包含所有必要的信息。

Imports System.Xml
Module Module1

    Sub Main()
        Dim input As String
        Dim nl As String = Environment.NewLine
        Dim xml_files As List(Of XmlTextReader)
        Dim xml_ds As List(Of DataSet)
        Dim ds_sum As DataSet

        Do While input <> "merge"
            Console.WriteLine("--- drag & drop file to  be merged---" + nl)
            input = Console.ReadLine()
            If input <> "merge" Then 
                Dim xml__ As New XmlTextReader(input)
                xml_files.Add(xml__) ' this is th plce that throws the exception 
                'xml_files.Add(New XmlTextReader(input))  something i tried
                Console.WriteLine(nl & "--- drag & drop new file or order  merge ---" & nl)
            ElseIf input = "merge" Then
                ' ▼ ▼ ▼ ▼  read datasets to collection ▼ ▼ ▼ ▼
                For i = 0 To xml_files.Count - 1
                    Dim ds As New DataSet ' mediator
                    ds.ReadXml(xml_files(i)) ' read one-by-one xml 
                    xml_ds.Add(ds) 'i ubacuje u kolekciju xml_ds
                Next
            End If
        Loop
        ' ▼ ▼ ▼ ▼ ovde sad ide XML MERGE ▼ ▼ ▼ ▼
        ds_sum = xml_ds(0)

        For i = 1 To xml_ds.Count
            ds_sum.Merge(xml_ds(i))
        Next
        ' ▼ ▼ ▼ ▼ ispis xml-a ▼ ▼ ▼ ▼
        Console.WriteLine(nl & "--- direktorijum u koji zelis da sacuvas sabrani XML Prevuci u terminal ---" & nl)
        input = Console.ReadLine()
        ds_sum.WriteXml(input)
    End Sub
End Module

`

Dim xml_files As List(Of XmlTextReader)

仅将 xml_files 声明为可以包含作为 XmlTextReader 列表的对象的对象。它没有初始化它。手写输入

Dim xml_files As List(Of XmlTextReader) = New List(Of XmlTextReader)

其中声明了对象并为其分配了一个新的初始化列表,但是你可以这样写

Dim xml_files As New List(Of XmlTextReader)

它完成了完全相同的事情。