数组在结构中默认为“无”而不是“0”

时间:2012-03-29 13:53:22

标签: vb.net arrays structure

我目前陷入了一个问题,即在结构中声明一个类型为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”表示短语,而“/”表示字符串没有?

任何帮助都会很棒!

1 个答案:

答案 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