如果有過用其它語言編程的經歷,那么想必會熟悉數組的概念。由于有了數組,可以用相同名字引用一系列變量,并用數字(索引)來識別它們。在許多場合,使用數組可以縮短和簡化程序,因為可以利用索引值設計一個循環(huán),高效處理多種情況。數組有上界和下界,數組的元素在上下界內是連續(xù)的。因為 visual basic對每一個索引值都分配空間,所以不要不切實際聲明一個太大的數組。
注意 這一部分討論的數組是程序中聲明的變量數組。它們不同于控件數組,控件數組是在設計時通過設置控件的 index 屬性規(guī)定的。變量數組總是連續(xù)的;與控件數組不同的是,不能從一個數組的中部加載或卸載數組元素。
一個數組中的所有元素具有相同的數據類型。當然,當數據類型為 variant 時,各個元素能夠包含不同種類的數據(對象、 字符串 、數值等等)。 可以聲明任何基本數據類型的數組,包括用戶自定義類型(請參閱 “再論編程”中的“創(chuàng)建自己的數據類型”)和對象變量(請參閱“用對象編程”)。
在 visual basic 中有兩種類型的數組:固定大小的數組— 它總是保持同樣的大小,以及在運行時大小可以改變的動態(tài)數組。在本章后面的“動態(tài)數組”中將要詳細討論動態(tài)數組。
聲明固定大小的數組
有三種方法聲明固定大小的數組,用哪一種方法取決于數組應有的有效范圍:
建立公用數組,在模塊的聲明段用 public 語句聲明數組。
建立模塊級數組,在模塊的聲明段用 private 語句聲明數組。
建立局部數組,在過程中用 private 語句聲明數組。
設定上下界
聲明數組時,在數組名之后跟一個用括號括起來的上界。上界不得超過 long 數據類型的范圍(-2,147,483,648 到 2,147,483,647)。例如,下列數組聲明可出現在模塊的聲明段:
dim counters (14) as integer ‘15 個元素。
dim sums (20) as double ’21 個元素。
為建立公用數組,直接用 public 取代 dim。
public counters (14) as integer
public sums (20) as double
在過程之中同樣的聲明使用 dim:
dim counters (14) as integer
dim sums (20) as double
第一個聲明建立了一個有 15 個元素的數組,其索引號從 0 到 14 。第二個聲明建立了一個有 21 個元素的數組,其索引號從 0 到 20 。缺省的下界為 0。
為了規(guī)定下界,用關鍵字 to 顯式提供下界(為 long 數據類型):
dim counters (1 to 15) as integer
dim sums (100 to 120) as string
在前述聲明中,counters 的索引值范圍從 1 到 15,而 sums 的索引值范圍從 100 到 200。
包含其它數組的數組
有可能建立 variant 數據類型數組,并與不同數據類型的數組共居一處。以下代碼建立兩個數組,一個包含整數,而另一個包含 字符串。然后聲明第三個 variant 數組,并將整數和字符串數組放置其中:
private sub command1_click ()
dim intx as integer ‘聲明計數器變量。
’聲明并放置整數數組。
dim countersa (5) as integer
for intx = 0 to 4
countersa (intx) = 5
next intx
‘聲明并放置字符串數組。
dim countersb (5) as string
for intx = 0 to 4
countersb (intx) = “hello”
next intx
dim arrx (2) as variant ’聲明擁有兩個成員的新數組。
arrx (1) = countersa () ‘將其它數組移居到數組。
arrx (2) = countersb ()
msgbox arrx (1) (2) ’顯示每一個數組的成員。
msgbox arrx (2) (3)
end sub
多維數組
有時需要追蹤記錄數組中的相關信息。例如,為了追蹤記錄計算機屏幕上的每一個像素,需要引用它的 x、y 坐標。這時應該用多維數組存儲值。
可用 visual basic 聲明多維數組。例如,下面的語句聲明了一個過程內的 10 × 10 的二維數組。
static matrixa (9, 9) as double
可用顯式下界來聲明兩個維數或兩個維數中的任何一個:
static matrixa (1 to 10, 1 to 10) as double
可以將所有這些推廣到二維以上的數組。例如:
dim multid (3, 1 to 10, 1 to 15)
這個聲明建立了三維數組,大小為 4 × 10 × 15。元素總數為三個維數的乘積,為 600。
注意 在增加數組的維數時,數組所占的存儲空間會大幅度增加,所以要慎用多維數組。使用 variant 數組時更要格外小心,因為他們需要更大的存儲空間。
用循環(huán)操作數組
可以用 for 循環(huán)嵌套有效的處理多維數組。例如,在 matrixa 中基于每個元素在數組中的位置為其賦值:
dim i as integer, j as integer
static matrixa(1 to 10, 1 to 10) as double
for i = 1 to 10
for j = 1 to 10
matrixa (i, j) = i * 10 + j
next j
next i
詳細信息 關于循環(huán)的詳細信息,請參閱本章后面的“循環(huán)結構”部分。