一、簡單If條件語句
使用在稱之為分支結構的特殊語句塊中的條件表達式控制了程序中哪些語句被執行以及什麼樣的執行次序執行。“If...Then”分支結構在程序中計算條件值,並根據條件值決定下一步執行的操作。最簡單的“If...Then”分支結構可以只寫在一行:
If Condition Then Statement[Else statement]
注意:“If...Then”分支結構用於給程序添加邏輯控制能力。這裡,“Condition”是個條件表達式,“Statement”是條件有效的Visual Basic語句。例如:
If Score>=20 Then Label1.Text="You Win!"是個使用了下述條件表達式的分支結構:Score>=20
根據這個表達式的值,程序決定是否把Label1對象的“Text”屬性設置為“You Win!”。如果“Score”變量的值大於等於20,Visual Basic設置該屬性的值,否則,Visual Basic跳過這條賦值語句,然後執行事件過程中的下一行語句。這類比較運算的結果不是“True”就是“False”,條件表達式從來不會產生模稜兩可的值。
二、If...Then...Else語句
Visual Basic還支持另一種格式的“If...Then”分支結構,該結構中包含幾個條件表達式,由多行語句組成,其中包含了重要關鍵字“ElseIf”、“Else”以及“End If”。
If Condition1 Then Statements ElseIf Condition2 Then Statements [其他ElseIf子句及其相應的執行語句] Else Statements End If
這個結構中,“Condition1”首先被計算。如果這個條件表達式的值為“True”,那麼這個條件表達式下的語句被執行;如果第一個條件的值不是“True”,那麼計算第二個表達式(Condition2)的值,如果第二個條件的值為“True”,那麼這個條件表達式下的語句塊被執行(如果要判斷更多的條件,那麼繼續增加“ElseIf”子句及該子句下的語句塊);如果所有條件表達式的值都不是“True”,那麼執行“Else”子句下的語句塊;最後,整個結構使用“End If”關鍵字結束。多行“If...Then”結構特別適合於分段計算問題,比如稅費方面的計算。下面的代碼展示了如何使用多行“If...Then”結構來確定遞進稅計算問題(收入和稅率的對應關系取自美國國內收入服務1997年稅率表):
If AdjustedIncome<=24650 Then '15%稅段 TaxDue=AdjustedIncome*0.15 ElseIf AdjustedIncome<=59750 Then '28%稅段 TaxDue=3697+((AdjustedIncome-24650)*0.28) ElseIf AdjustedIncome<=124650 Then '31%稅段 TaxDue=13525+((AdjustedIncome-59750)*0.31) ElseIf AdjustedIncome<=271050 Then '36%稅段 TaxDue=33644+((AdjustedIncome-124650)*0.36) Else '39.6%稅段 TaxDue=86348+((AdjustedIncome-271050)*0.396) End If
注意:總是可以添加更多的“ElseIf”塊到“If...Then”結構中去。但是,當每個“ElseIf”都將相同的表達式比作不同的數值時,這個結構編寫起來很乏味。在這種情況下可以使用“Select Case”判定結構。
三、Select Case結構
Visual Basic還支持在程序中使用“Select Case”分支結構來控制語句的執行。 “Select Case”結構與“If...Then...Else”結構相似,但在處理依賴於某個關鍵變量或稱作測試情況的分支時效率更高。並且,使用“Select Case”結構可以提高程序的可讀性。“Select Case”結構的語法如下所示:
Select Case Variable Case Value1 Statements Case Value2 Statements Case Value3 Statements ... End Select
“Select Case”結構以關鍵字“Select case”開始,以關鍵字“End Select”結束。“Select Case”結構中的“Variable”可以是變量、屬性或者是表達式,“Value1”、“Value2”,“Value3”可以是數值、字符串或與要測試的其他情況相關的其他值,如果其中某個值與變量相匹配,那麼該“Case”子句下的語句被執行,然後Visual Basic執行“End Select”語句後面的語句。“Select Case”結構中可以使用任意多個“Case”子句,“Case”子句中也可以包括多個“Value”值,多個“Value”值之間使用逗號分隔。
下面示例展示了程序中如何使用“Select Case”結構打印與某人年齡相關的信息。當“Age”變量與某個“Case”值匹配時,相應的信息顯示在標簽對象中。
Select Case Age case 16 Label1.Text="You can drive now!" Case 18 Label1.Text="You can vote now!" Case 21 Label1.Text="You can drink wine with your meals." Case 65 Label1.Text="Time to retire and have fun!" End Select
注意:“Select Case”結構比功能等效的“If...Then”結構更清晰易讀。“Select Case”結構還支持“Case Else”子句,該子句可用於當不滿足所有“Case”條件時顯示信息。下面是說明“Case Else”子句用法的一個示例:
Select Case Age Case 16 Label1.Text="You can drive now!" Case 18 Label1.Text="You can vote now!" Case 21 Label1.Text="You can drink wine with your meals." Case 65 Label1.Text="Time to retire and have fun!" Case Else Label1.Text="You're a great age!Enjoy it!" End Select
注意:“Select Case”結構每次都要在開始處計算表達式的值,而“If...Then...Else”結構為每個“ElseIf”語句計算不同的表達式,只有在“If”語句和每個“ElseIf”語句計算相同的表達式時,才能使用“Select Case”結構替換“If...Then...Else”結構。