概述
數組到底應該有多大才合適,有時可能不得而知。所以希望能夠在運行時具有改變數組大小的能力。
動態數組就可以在任何時候改變大小。在 Visual Basic 中,動態數組最靈活、最方便,有助於有效管理記憶體。例如,可短時間使用一個大數組,然後,在不使用這個數組時,將記憶體空間釋放給系統。
如果不用動態數組,就要聲明一個數組,它的大小儘可能達到最大,然後再抹去那些不必要的元素。但是,如果過度使用這種方法,會導致記憶體的操作環境變慢。
基本步驟
要創建動態數組,請按照以下步驟執行:
(如果希望數組為公用數組,則)用 Public 語句聲明數組,或者,(如果希望數組為模組級,則)在模組級用 Dim 語句聲明數組,或者(如果希望數組為局部數組,則)在過程中用 Static 或 Dim 語句聲明數組。給數組附以一個空維數表,這樣就將數組聲明為動態數組。 Dim DynArray ()用REDIM語句分配實際的元素個數。
ReDim DynArray (X + 1)ReDim 語句只能出現在過程中。與 Dim 語句、Static 語句不同,ReDim 語句是一個可執行語句,由於這一語句,應用程式在運行時執行一個操作。ReDim 語句支持這樣的語法,它與固定數組中使用的語法相同。對於每一維數,每個 ReDim 語句都能改變元素數目以及上下界。但是,數組的維數不能改變。ReDim DynArray (4 to 12)例如,用第一次聲明在模組級所建立的動態數組 Matrix1:Dim Matrix1 () As Integer然後,在過程中給數組分配空間:Sub CalcValuesNow () . . . ReDim Matrix1 (19, 29)End Sub這裡的 ReDim 語句給 Matrix 分配一個 20 × 30 的整數矩陣(元素總大小為 600)。還有一個辦法,用變數設定動態數組的邊界:ReDim Matrix1 (X, Y)
注意
您可以將字元串賦值給大小可變的位元組數組。一個位元組數組也可以被賦值給一個可變長的字元串。一定要注意字元串中的位元組數會隨平台而變化。同一個字元串在 Unicode 平台上的位元組數是它在非 Unicode 平台上的兩倍。保留動態數組的內容每次執行 ReDim 語句時,當前存儲在數組中的值都會全部丟失。Visual Basi 重新將數組元素的值置為 Empty(對 Variant 數組)、置為 0(對 Numeric 數組)、置為 零長度字元串(對 String 數組)或者置為 Nothing(對於對象的數組)。在為新數據準備數組,或者要縮減數組大小以節省記憶體時,這樣做是非常有用的。有時希望改變數組大小又不丟失數組中的數據。使用具有 Preserve 關鍵字的 ReDim 語句就可做到這點。例如,使用Ubound函式引用上界,使數組擴大、增加一個元素,而現有元素的值並未丟失:ReDim Preserve DynArray (UBound (DynArray) + 1)在用 Preserve 關鍵字時,只能改變多維數組中最後一維的上界;如果改變了其它維或最後一維的下界,那么運行時就會出錯。所以可這樣編程:ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)而不可這樣編程:ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)詳細信息 關於動態數組的更詳細信息,請參閱語言參考中的“ReDim 函式”。關於對象數組,請參閱“用對象編程”。