2013-05-15 50 views
0

你好,我收到一個「的NullReferenceException是未處理的」錯誤,當我嘗試運行這段代碼:的NullReferenceException是未處理的小環

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

背景: 我讀,我清理,並分成csvtagssplit csv文件()

csvopc和csvsql在程序的頂部都聲明爲string()。

什麼愚蠢我做了,我不知道?

複製它,如果你想: 代碼: http://pastebin.com/JDPa6FSB CSV: http://pastebin.com/2e66i9EB

+0

哪一行引發異常? –

+1

我沒有看到cvsopc和cvssql的聲明和尺寸。我認爲你應該展示你如何聲明和初始化這兩個 – Steve

+0

http://pastebin.com/V18GX5X9 csvopc(i)= csvtagssplit(17 * i)拋出異常 – user2376356

回答

0

你的問題是在你的代碼的INTIAL一部分,你聲明兩個變量cvsopccvssql

隨着從您的評論你寫

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

但這只是聲明瞭兩個變量沒有任何尺寸。
所以,當你試圖達到csvopc(i)您有效地引用不存在

爲什麼使用數組時,你不知道你的元素的確切大小指數? 您可以輕鬆地切換到List(Of String)在那裏你可以dinamically添加元素

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 

一覽表(串),也可以通過索引被引用作爲

Dim aValue = csvopc(0) 
+0

然後數組的用法是什麼?數組是不是真的只是具有相同數據類型的數據列表? – user2376356

+0

當您需要速度以及何時知道數組的確切尺寸時,使用數組仍然很有用。在這種特殊情況下,更現代的List是明顯的贏家 – Steve

+0

當你說速度時,一旦csv變得太大,我會得到不好的表現,因爲我使用列表而不是數組? – user2376356

0

你應該通過與調試代碼步驟,以便在代碼運行時檢查數據。你可以在一個地方放置一個斷點,在這個地方所有東西都應該被初始化,但在發生異常之前,然後看看這些值是什麼。

哪個循環迭代失敗,哪條線明確失敗?在該行上放置一個斷點並查看該行執行前的所有值。如果這個調試不會向您顯示錯誤,請使用您在調試期間找到的數據更新您的文章,也許我們可以找到某處。

+0

循環在這一行開始時失敗:csvopc(i)= csvtagssplit(17 * i) – user2376356

+0

調試器給csvopc,csvtagssplit和i賦值的是什麼? – 2013-05-15 15:17:54

相關問題