發新話題

Visual Basic 教學 - 《關於變數》動態陣列

Visual Basic 教學 - 《關於變數》動態陣列

動態陣列
有時您可能不能正確的得知陣列到底應該要多大才合適。所以您可能希望能夠在執行階段具有改變陣列大小的能力。
動態陣列就可以在任何時候改變大小。在 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 Basic 會重新將陣列元件的值設定為 Empty (對 Variant 陣列而言)、為 0 (對數值陣列而言)、為長度為零的字串 (對字串陣列而言) 或者為 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)

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。