Visual Basic/語言
許多計算機語言共享一組核心功能。有時它們在不同的語言中非常相似,有時則截然不同。一種語言的使用者認為不可或缺的功能,在其他完全可用的語言中可能完全缺失。
Visual Basic 中的語句就像給計算機發出命令一樣。函式和子例程是由語句組成的。
語句通常由一個子例程的名稱後跟一個引數列表組成
Debug.Print "Hello World"
第一個詞 (Debug) 是 Visual Basic 中內建物件的名稱。第二個詞 (Print) 是該物件方法的名稱。“Hello World” 是該方法的引數。結果是
Hello World
列印到立即視窗。
在 Visual Basic Classic 中,子例程呼叫語句可以用兩種方式編寫
x "Hello", "World"
Call x("Hello", "World")
x 是一個接受兩個字串引數的子例程。關鍵字Call 是 Basic 較早版本遺留下來的。如果您使用這種形式,則必須將整個引數列表括在圓括號中。有時程式設計師想要呼叫一個函式,但對返回值不感興趣,只對副作用感興趣。在這種情況下,他會像呼叫子例程一樣呼叫該函式,但只能使用上面的第一種形式。
還有其他更復雜的語句,它們可以跨越多行程式碼
- If..Else..End If
- Do While..Loop
這些複合語句包括其他語句和表示式。
與大多數程式語言一樣,Visual Basic 能夠使用和處理命名變數及其內容。變數最簡單的描述是,我們用來引用記憶體中某個位置的名稱——一個儲存我們正在處理的值的位置。
將變數想象成“鴿籠”或值的佔位符通常會有所幫助。您可以將變數視為與其值等效。因此,如果您有一個初始化為 4 的變數i,則i+1 將等於5。
在 Visual Basic 中,變數可以在使用前宣告,也可以讓編譯器為它們分配空間。對於除最簡單的程式之外的所有程式,最好宣告所有變數。這有幾個好處
- 您可以獲得所需的型別,而不是Variant。
- 編譯器有時可以檢查您是否使用了正確的型別。
Visual Basic 中所有變數都是型別化的,即使那些宣告為Variant 的變數也是如此。如果您沒有指定型別,則編譯器將使用 Variant。Variant 變數是可以儲存任何型別資料的變數。
以下是如何宣告一個整數的示例,我們將其命名為some_number。
Dim some_number As Integer
您也可以使用一個語句宣告多個變數
Dim anumber, anothernumber, yetanothernumber As Integer
這不是一個好主意,因為很容易忘記在 Visual Basic 中,型別名稱只適用於緊鄰其前的變數名。該示例聲明瞭兩個Variants 和一個Integer
您可以透過這個小程式來演示實際情況
Option Explicit
Public Sub main()
Dim anumber, anothernumber, yetanothernumber As Integer
Dim v As Variant
Debug.Print TypeName(anumber), VarType(anumber), _
TypeName(anothernumber), VarType(anothernumber), _
TypeName(yetanothernumber), VarType(yetanothernumber)
Debug.Print TypeName(anumber), VarType(v)
Debug.Print "Assign a number to anumber"
anumber = 1
Debug.Print TypeName(anumber), VarType(anumber)
Debug.Print "Assign a string to anumber"
anumber = "a string"
Debug.Print TypeName(anumber), VarType(anumber)
End Sub
結果是
Empty 0 Empty 0 Integer 2 Empty 0 Assign a number to anumber Integer 2 Assign a string to anumber String 8
請注意,VarType 和 TypeName 都返回有關儲存在 Variant 內部的變數的資訊,而不是有關 Variant 本身的資訊。
因此,要依次宣告三個整數,請使用
Dim anumber As Integer, anothernumber As Integer, yetanothernumber As Integer
在 Visual Basic 中,無法將宣告和初始化與變數結合起來(因為 VB 不支援建構函式——儘管請參閱物件和初始化),以下語句是非法的
Dim some_number As Integer = 3
只有常量宣告允許您這樣做
Const some_number As Integer = 3
在 Visual Basic 中,變數可以在子例程、函式或屬性的內部任何地方宣告,它們的範圍限於該例程。它們也可以在模組的宣告部分宣告,該部分位於任何子例程、函式或屬性之前,它們具有模組級範圍。
預設情況下,變數無需在使用前宣告。以這種方式建立的任何變數都將是Variant 型別。這種行為可以透過在模組頂部使用 Option Explicit 語句來覆蓋,這將強制程式設計師在使用前宣告所有變數。
宣告變數後,您可以使用以下語句稍後為變數賦值
Let some_number = 3
Let 關鍵字是可選的,因此
some_number = 3
也是一個有效的語句。
您還可以將一個變數賦值給另一個變數,如下所示
anumber = anothernumber
在 Visual Basic 中,您無法使用一個語句為多個變數賦相同的值。以下語句不會像 C 程式設計師期望的那樣工作
anumber = anothernumber = yetanothernumber = 3
相反,它將除第一個= 符號之外的所有= 符號視為等式測試運算子,然後根據anothernumber 和yetanotherniumber 的值,將True 或False 分配給anumber。
Visual Basic 中的變數名由字母(大寫和小寫)和數字組成。下劃線字元“_”也被允許。名稱不能以數字開頭。名稱可以任意長。
一些有效的(但不太描述性的)Visual Basic 變數名的示例
foo Bar BAZ foo_bar a_foo42_ QuUx
一些無效的 Visual Basic 變數名的示例
- 2foo
- 不能以數字開頭
- my foo
- 名稱中不允許使用空格
- $foo
- $ 不允許——只能使用字母、數字和 _
- while
- 語言關鍵字不能用作名稱
- _xxx
- 不允許使用前導下劃線。
某些詞是語言中的保留關鍵字,這些詞不能用作變數名,也不能用作其他任何事物的名稱。
此外,還有一些名稱集,雖然不是語言關鍵字,但出於某種原因被保留。
變數的命名規則也適用於其他語言結構,例如函式名和模組名。
養成使用描述性變數名的習慣是一個好習慣。如果您在建立程式碼的幾個月後檢視一段程式碼,並看到變數var1、var2 等,您很可能不知道它們控制什麼。諸如textinput 或time_start 之類的變數名更具描述性——您確切地知道它們的作用。如果您的變數名包含多個單詞,則習慣上用大寫字母開始下一個單詞。請記住,您不能在變數名中使用空格,合理的首字母大寫更易於區分單詞。稍後在程式碼中鍵入變數名時,您可以全部使用小寫——一旦您離開相關行,如果變數名是有效的 VB,它將根據需要大寫。
在程式中,您顯式指定值而不是引用變數或其他形式的資料,該值被稱為字面量。在上面的初始化示例中,3 是一個字面量。數字可以寫成整數、小數、“科學”表示法或十六進位制。要識別十六進位制數,只需在數字前面加上 &H。
條件子句是僅在特定表示式(條件)為真時才會執行的程式碼塊。
If 語句是最靈活的條件語句:請參閱 分支
通常,需要將一個特定變數與多個值進行比較。對於這種條件表示式,使用Select Case 語句。
無條件語句 允許您在沒有條件的情況下更改程式的流程。這些語句包括 Exit、End 和 Goto 語句。
迴圈 允許您將一組語句重複執行多次。
要重複執行一段程式碼一定的次數,或者對列表中的每個元素執行一次,請參閱 For..Next 迴圈
| 上一節:案例研究 | 目錄 | 下一節:編碼規範 |