NullReferenceException在小循环中未处理

时间:2013-05-15 14:02:39

标签: vb.net nullreferenceexception

我尝试运行此代码时收到“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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您的问题出现在代码的初始部分,您声明了两个变量cvsopccvssql

从你的评论中写出

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

List(Of String)也可以被索引引用,如

   Dim aValue = csvopc(0)