我目前陷入了一个问题,即在结构中声明一个类型为short的数组,并且在ReDim之后默认为'nothing'而不是'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)时,返回的数组在arry中有10条记录,其中sTot_Desc和iTot_Cnt在所有记录中都没有值。
当我重新调整m_Totals时,我在结构中声明的变量(sTot_Desc和iTot_Cnt)都被声明为空,这对于String很好,但是我需要声明的Short我声明为'0',这就是我的想法当你ReDim时发生。任何人都可以看到这里发生了什么,以及为什么它将我的变量声明为“没有”而不是默认为“0”表示短语,而“/”表示字符串没有?
任何帮助都会很棒!
答案 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