0

您好,当我尝试运行此代码时收到“nullreferenceexception 未处理”错误:

        For i As Integer = 1 To aantaltags
            csvopc(i) = csvtagssplit(17 * i)
            csvsql(i) = csvtagssplit(17 * i + 15)
        Next

背景:我阅读了一个 csv 文件,我将其清理并拆分为 csvtagssplit()

csvopc 和 csvsql 在程序顶部都声明为 string()。

我做了什么蠢事而我没有注意到?

如果你想复制它: 代码: http://pastebin.com/JDPa6FSB csv: http: //pastebin.com/2e66i9EB

4

2 回答 2

0

您应该使用调试器单步执行您的代码,以便在代码运行时检查数据。您可以在应该初始化所有内容但在异常发生之前放置一个断点,然后查看值是什么。

循环的哪个迭代失败了,具体是哪一行失败了?在该行上放置一个断点,并在该行执行之前查看所有值是什么。如果此调试没有向您显示错误,请使用您在调试期间找到的数据更新您的帖子,也许我们可以找到某个地方。

于 2013-05-15T14:11:45.173 回答
0

您的问题出在代码的初始部分,您在其中声明了两个变量 ,cvsopc并且cvssql

正如你写的评论

Dim csvopc As String() 
Dim csvsql As String()

但这仅声明了没有任何维度的两个变量。
因此,当您尝试访问 csvopc(i) 时,您实际上是在引用一个不存在的索引

当您不知道元素的确切大小时,为什么要使用数组?您可以轻松切换到List(Of String)可以动态添加元素的位置

Dim csvopc As List(Of String) = new List(Of String)
Dim csvsql As List(Of String) = new List(Of String)

然后在你的循环中

    For i As Integer = 0 To aantaltags - 1
        csvopc.Add(csvtagssplit(17 * i))
        csvsql.Add(csvtagssplit(17 * i + 15))
    Next

A List(Of String) 也可以由 Index 引用,如

   Dim aValue = csvopc(0)
于 2013-05-15T14:24:44.390 回答