動態數組
在有些情況下,使用者可能不知道需要多大的數組,這時就需要用一個能夠改變大小的數組,這就是動態數組。動態數組可以在任何時侯改變大小。在VB中,動態數組是最靈活、最方便的一種數組。利用動態數組還有助於有效管理記憶體,因為動態數組是使用時才開闢記憶體空間,在不使用這個數組時,還可以將記憶體空間釋放給系統。這樣就可以最大限度地節省記憶體,提高運行速度。
建立動態數組需要2步,第一步和固定長度數組(靜態數組)類似,用Dim語句(或Private、Public、Static)聲明,但是不要指定維數。如:
Dim MyArry () As Integer
第二步在以後的實際程式中,當要用到該數組時,再用ReDim語句分配實際的元素個數,這時需要確定元素的個數。如前面聲明的數組MyArry,可以用下面語句將它定義為一個二維數組:
ReDim MyArry(10,10)
ReDim語句只能出現在過程中。與Dim語句、Static語句這些變數聲明語句不同,ReDim語句是—個可執行語句,ReDim語句可以改變元素數目以及上下界,但在第一個ReDim語句定義了數組維數之後,就不能夠再改變數組維數(最多能定義的維數是60),只能改變數組邊界。如:
Dim MyArry () As Single '聲明動態數組
ReDim MyArry(30,20,10) '重新定義數組
ReDim MyArry(50,23,21) '再次重新定義數組(這時不能再改變維數)
每次執行ReDim語句時,Visual
Basic會把動態數組中的數值重新初始化一遍,當前儲存在數組中的值都會全部丟失。但是使用者有時希望只改變數組大小,但不丟失數組中的資料。這時,可以使用帶Preserve關鍵字的ReDim語句。其格式為:
ReDim Preserve數組名([下標下界
To]下標上界) [As
資料類型]
例如:
ReDim MyArry(50,23,21)
ReDim Preserve MyArry(50,23,50)
注意:用Preserve只能在改變數組的最後一維大小時,保留數組的資料。對一維數組來說,所有資料都會保留,而對於多維陣列,只能改變最後一維的大小,才能保留全部數組資料,否則出錯。