Variant 變量中存儲的 Objects
可以將 Objects 存儲在 Variant 變量中。當(dāng)需要高效地處理包括 Objects 在內(nèi)的各種數(shù)據(jù)類型時,這可能十分有用。例如,一個數(shù)組中的所有元素都必須具有相同的數(shù)據(jù)類型。將數(shù)組的數(shù)據(jù)類型設(shè)置成 Variant 就可將Objects 連同其它數(shù)據(jù)類型一起存入同一個數(shù)組中。
數(shù)組
如果有過用其它語言編程的經(jīng)歷,那么想必會熟悉數(shù)組的概念。由于有了數(shù)組,可以用相同名字引用一系列變量,并用數(shù)字(索引)來識別它們。在許多場合,使用數(shù)組可以縮短和簡化程序,因為可以利用索引值設(shè)計一個循環(huán),高效處理多種情況。數(shù)組有上界和下界,數(shù)組的元素在上下界內(nèi)是連續(xù)的。因為 Visual Basic對每一個索引值都分配空間,所以不要不切實際聲明一個太大的數(shù)組。
注意 這一部分討論的數(shù)組是程序中聲明的變量數(shù)組。它們不同于控件數(shù)組,控件數(shù)組是在設(shè)計時通過設(shè)置控件的 Index 屬性規(guī)定的。變量數(shù)組總是連續(xù)的;與控件數(shù)組不同的是,不能從一個數(shù)組的中部加載或卸載數(shù)組元素。
一個數(shù)組中的所有元素具有相同的數(shù)據(jù)類型。當(dāng)然,當(dāng)數(shù)據(jù)類型為 Variant時,各個元素能夠包含不同種類的數(shù)據(jù)(對象、字符串 、數(shù)值等等)。可以聲明任何基本數(shù)據(jù)類型的數(shù)組,包括用戶定義的類型(請參閱第八章“再論編程”中的“創(chuàng)建自己的數(shù)據(jù)類型”)和對象變量(請參閱第九章“用對象編程” ) 。
在Visual Basic中有兩種類型的數(shù)組:固定大小的數(shù)組——它總是保持同樣的大小,以及在運行時大小可以改變的動態(tài)數(shù)組。在本章后面的“動態(tài)數(shù)組”中將要詳細(xì)討論動態(tài)數(shù)組。
聲明固定大小的數(shù)組
有三種方法聲明固定大小的數(shù)組,用哪一種方法取決于數(shù)組應(yīng)有的有效范圍:
建立公用數(shù)組,在模塊的聲明段用 Public 語句聲明數(shù)組。
建立模塊級數(shù)組,在模塊的聲明段用 Private 語句聲明數(shù)組。
建立局部數(shù)組,在過程中用 Private 語句聲明數(shù)組。
設(shè)定上下界
聲明數(shù)組時,在數(shù)組名之后跟一個用括號括起來的上界。上界不得超過 Long數(shù)據(jù)類型的范圍(-2,147,483,648 到 2,147,483,647)。例如,下列數(shù)組聲明可出現(xiàn)在模塊的聲明段:
Dim Counters (14) As Integer '15 個元素。
Dim Sums (20) As Double '21 個元素。
為建立公用數(shù)組,直接用 Public 取代 Dim。
Public Counters (14) As Integer
Public Sums (20) As Double
在過程之中同樣的聲明使用 Dim:Dim Counters (14) As IntegerDim Sums (20) As Double第一個聲明建立了一個有 15 個元素的數(shù)組,其索引號從 0 到 14 。第二個聲明建立了一個有 21 個元素的數(shù)組,其索引號從 0 到 20 。缺省的下界為 0。
為了規(guī)定下界,用關(guān)鍵字 To 顯式提供下界(為 Long 數(shù)據(jù)類型):
Dim Counters (1 To 15) As Integer
Dim Sums (100 To 120) As String
在前述聲明中,Counters 的索引值范圍從 1 到 15,而 Sums 的索引值范圍從 100 到 120。
包含其它數(shù)組的數(shù)組
有可能建立 Variant 數(shù)據(jù)類型數(shù)組,并與不同數(shù)據(jù)類型的數(shù)組共居一處。以下代碼建立兩個數(shù)組,一個包含整數(shù),而另一個包含 字符串。然后聲明第三個 Variant 數(shù)組,并將整數(shù)和字符串?dāng)?shù)組放置其中:
Private Sub Command1_Click ()
Dim intX As Integer '聲明計數(shù)器變量。
'聲明并放置整數(shù)數(shù)組。
Dim countersA (5) As Integer
For intX = 0 To 4
countersA (intX) = 5
Next intX
'聲明并放置字符串?dāng)?shù)組。
Dim countersB (5) As String
For intX = 0 To 4
countersB (intX) = "hello"
Next intX
Dim arrX (2) As Variant '聲明擁有兩個成員的新數(shù)組。
arrX (1) = countersA () '將其它數(shù)組移居到數(shù)組。
arrX (2) = countersB ()
MsgBox arrX (1) (2) '顯示每一個數(shù)組的成員。
MsgBox arrX (2) (3)
End Sub
多維數(shù)組
有時需要追蹤記錄數(shù)組中的相關(guān)信息。例如,為了追蹤記錄計算機屏幕上的每一個像素,需要引用它的 X、Y 坐標(biāo)。這時應(yīng)該用多維數(shù)組存儲值??捎?Visual Basic 聲明多維數(shù)組。例如,下面的語句聲明了一個過程內(nèi)的10×10的二維數(shù)組。
Static MatrixA (9, 9) As Double
可用顯式下界來聲明兩個維數(shù)或兩個維數(shù)中的任何一個:
Static MatrixA (1 To 10, 1 To 10) As Double
可以將所有這些推廣到二維以上的數(shù)組。例如:
Dim MultiD (3, 1 To 10, 1 To 15)
這個聲明建立了三維數(shù)組,大小為 4 × 10 × 15。元素總數(shù)為三個維數(shù)的乘積,為 600。
可以將 Objects 存儲在 Variant 變量中。當(dāng)需要高效地處理包括 Objects 在內(nèi)的各種數(shù)據(jù)類型時,這可能十分有用。例如,一個數(shù)組中的所有元素都必須具有相同的數(shù)據(jù)類型。將數(shù)組的數(shù)據(jù)類型設(shè)置成 Variant 就可將Objects 連同其它數(shù)據(jù)類型一起存入同一個數(shù)組中。
數(shù)組
如果有過用其它語言編程的經(jīng)歷,那么想必會熟悉數(shù)組的概念。由于有了數(shù)組,可以用相同名字引用一系列變量,并用數(shù)字(索引)來識別它們。在許多場合,使用數(shù)組可以縮短和簡化程序,因為可以利用索引值設(shè)計一個循環(huán),高效處理多種情況。數(shù)組有上界和下界,數(shù)組的元素在上下界內(nèi)是連續(xù)的。因為 Visual Basic對每一個索引值都分配空間,所以不要不切實際聲明一個太大的數(shù)組。
注意 這一部分討論的數(shù)組是程序中聲明的變量數(shù)組。它們不同于控件數(shù)組,控件數(shù)組是在設(shè)計時通過設(shè)置控件的 Index 屬性規(guī)定的。變量數(shù)組總是連續(xù)的;與控件數(shù)組不同的是,不能從一個數(shù)組的中部加載或卸載數(shù)組元素。
一個數(shù)組中的所有元素具有相同的數(shù)據(jù)類型。當(dāng)然,當(dāng)數(shù)據(jù)類型為 Variant時,各個元素能夠包含不同種類的數(shù)據(jù)(對象、字符串 、數(shù)值等等)。可以聲明任何基本數(shù)據(jù)類型的數(shù)組,包括用戶定義的類型(請參閱第八章“再論編程”中的“創(chuàng)建自己的數(shù)據(jù)類型”)和對象變量(請參閱第九章“用對象編程” ) 。
在Visual Basic中有兩種類型的數(shù)組:固定大小的數(shù)組——它總是保持同樣的大小,以及在運行時大小可以改變的動態(tài)數(shù)組。在本章后面的“動態(tài)數(shù)組”中將要詳細(xì)討論動態(tài)數(shù)組。
聲明固定大小的數(shù)組
有三種方法聲明固定大小的數(shù)組,用哪一種方法取決于數(shù)組應(yīng)有的有效范圍:
建立公用數(shù)組,在模塊的聲明段用 Public 語句聲明數(shù)組。
建立模塊級數(shù)組,在模塊的聲明段用 Private 語句聲明數(shù)組。
建立局部數(shù)組,在過程中用 Private 語句聲明數(shù)組。
設(shè)定上下界
聲明數(shù)組時,在數(shù)組名之后跟一個用括號括起來的上界。上界不得超過 Long數(shù)據(jù)類型的范圍(-2,147,483,648 到 2,147,483,647)。例如,下列數(shù)組聲明可出現(xiàn)在模塊的聲明段:
Dim Counters (14) As Integer '15 個元素。
Dim Sums (20) As Double '21 個元素。
為建立公用數(shù)組,直接用 Public 取代 Dim。
Public Counters (14) As Integer
Public Sums (20) As Double
在過程之中同樣的聲明使用 Dim:Dim Counters (14) As IntegerDim Sums (20) As Double第一個聲明建立了一個有 15 個元素的數(shù)組,其索引號從 0 到 14 。第二個聲明建立了一個有 21 個元素的數(shù)組,其索引號從 0 到 20 。缺省的下界為 0。
為了規(guī)定下界,用關(guān)鍵字 To 顯式提供下界(為 Long 數(shù)據(jù)類型):
Dim Counters (1 To 15) As Integer
Dim Sums (100 To 120) As String
在前述聲明中,Counters 的索引值范圍從 1 到 15,而 Sums 的索引值范圍從 100 到 120。
包含其它數(shù)組的數(shù)組
有可能建立 Variant 數(shù)據(jù)類型數(shù)組,并與不同數(shù)據(jù)類型的數(shù)組共居一處。以下代碼建立兩個數(shù)組,一個包含整數(shù),而另一個包含 字符串。然后聲明第三個 Variant 數(shù)組,并將整數(shù)和字符串?dāng)?shù)組放置其中:
Private Sub Command1_Click ()
Dim intX As Integer '聲明計數(shù)器變量。
'聲明并放置整數(shù)數(shù)組。
Dim countersA (5) As Integer
For intX = 0 To 4
countersA (intX) = 5
Next intX
'聲明并放置字符串?dāng)?shù)組。
Dim countersB (5) As String
For intX = 0 To 4
countersB (intX) = "hello"
Next intX
Dim arrX (2) As Variant '聲明擁有兩個成員的新數(shù)組。
arrX (1) = countersA () '將其它數(shù)組移居到數(shù)組。
arrX (2) = countersB ()
MsgBox arrX (1) (2) '顯示每一個數(shù)組的成員。
MsgBox arrX (2) (3)
End Sub
多維數(shù)組
有時需要追蹤記錄數(shù)組中的相關(guān)信息。例如,為了追蹤記錄計算機屏幕上的每一個像素,需要引用它的 X、Y 坐標(biāo)。這時應(yīng)該用多維數(shù)組存儲值??捎?Visual Basic 聲明多維數(shù)組。例如,下面的語句聲明了一個過程內(nèi)的10×10的二維數(shù)組。
Static MatrixA (9, 9) As Double
可用顯式下界來聲明兩個維數(shù)或兩個維數(shù)中的任何一個:
Static MatrixA (1 To 10, 1 To 10) As Double
可以將所有這些推廣到二維以上的數(shù)組。例如:
Dim MultiD (3, 1 To 10, 1 To 15)
這個聲明建立了三維數(shù)組,大小為 4 × 10 × 15。元素總數(shù)為三個維數(shù)的乘積,為 600。

