2012-03-29 35 views
0

我目前被困在一個關於在結構中聲明short類型數組的問題上,並且它在ReDim後默認爲'Nothing'而不是'0'。Array在結構中默認'沒有'而不是'0'

'Declaring array and setting it's initial size 


Private Structure Totals_T 
Dim sTot_Desc As String 
<VBFixedArray(10)> Dim iTot_Cnt() As Short 
     Public Sub Initialize() 
       ReDim iTot_Cnt(10) 
End Sub 

End Structure 

Private m_Totals() As Totals_T 'Define the array 


'Calling the structure for the two variables declared in the structure 
If iNewCnt = 1 Then 
ReDim m_Totals(10) 
**m_Totals(0).**iTot_Cnt(iColumn_No) = m_Totals(0).iTot_Cnt(iColumn_No) + 1 

當調用m_Totals(0)返回的陣列具有10條記錄與sTot_Desc和iTot_Cnt具有沒有在所有記錄值ARRY。

當我ReDim m_Totals在結構中聲明的兩個變量(sTot_Desc和iTot_Cnt)都被聲明爲沒有任何東西,這對String來說很好,但是我需要我聲明的Short被聲明爲'0',這就是我當你認爲ReDim時會發生這種想法。任何人都可以看到這裏發生了什麼,以及爲什麼它聲明我的變量爲'沒有',而不是默認爲'0'的短和「/爲字符串沒有?

任何幫助將是偉大的!

回答

1

第一個問題是,在重新調整結構數組後,您沒有調用Initialize方法。你可以修復這個:

For Each total As Totals_T In m_Totals 
     total.Initialize() 
    Next 

第二個問題是字符串總是被初始化爲空;如果你想要發生任何事情,你需要明確地將它們設置爲空字符串。您可以通過更改Initialize方法來解決此問題:

Public Sub Initialize() 
     sTot_Desc = String.Empty 
     ReDim iTot_Cnt(10) 
    End Sub