2012-03-23 16 views
0

我一直在試圖將值分配給被定義如下的對象陣列上元素類型投擲錯誤...對象Arrary上使用ReDim

Dim englishTextAry As Object(,) = New Object(,) {} 

我循環通過一個DataReader並試圖分配值使用下面的代碼...

While rdr.Read() 
    Dim recID As String = rdr.Item(0) 
    Dim dataVal As String = rdr.Item(1) 

    ReDim Preserve englishTextAry(recID, dataVal) 

End While 

但是,ReDim拋出dataVal不是一個整數的錯誤。

我在這裏做錯了什麼?任何人都可以將我指向正確的方向嗎?

謝謝,

回答

1

對於非小數目的行,您將會執行可怕數量的ReDim。你可以使用一個類來保存ID值對和一個列表來保存他們:

Module Module1 

    Class IdValPair 
     Property RecId As String 
     Property DataVal As String 
    End Class 

    Sub Main() 
     Dim myItems As New List(Of IdValPair) 
     '... 
     While rdr.Read 
      myItems.Add(New IdValPair With {.RecId = rdr.Item(0), .DataVal = rdr.Item(1)}) 
     End While 

    End Sub 

End Module 

...並回答你的問題,ReDim語句花費的大小,以REDIM爲數字。

+0

如何讀取數據?我會有一個名爲value的變量,這將等於該類中的一個recId,我需要dataVal其中value = recId。 – htm11h 2012-03-23 19:19:53

+0

您可以使用LINQ查詢列表中的數據,例如如果將只有一個dataVal被檢索:Dim x =(從p In myItems其中p.DataVal = value選擇p.RecId)。首先 – 2012-03-23 19:34:10

+0

感謝得到它的工作。 – htm11h 2012-03-23 20:58:17

-1

查看ArrayList對象。我通常使用它來動態添加/獲取值比正常數組更容易的代碼。

+0

'ArrayList'已棄用。不要使用它。 'System.Collections.Generic'命名空間提供替換。 – 2012-03-23 19:03:26

+0

除非你被Visual Studio 2003困住,否則你想要使用一個通用的List而不是一個ArrayList。 – 2012-03-23 19:49:29