Select...Case 陳述式 (Visual Basic)
根據運算式的值,執行幾組陳述式中的一組。
語法
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
組件
詞彙 | 定義 |
---|---|
testexpression |
必要。 運段式。 必須評估為其中一個基本資料類型 (Boolean 、Byte 、Char 、Date 、Double 、Decimal 、Integer 、Long 、Object 、SByte 、Short 、Single 、String 、UInteger 、ULong 與 UShort )。 |
expressionlist |
Case 陳述式中的必要元素。 運算式子句的清單,表示 testexpression 的相符值。 多個運算式子句會以逗號分隔。 每個子句都可以採用下列其中一種形式:- expression1 To expression2- [ Is ] comparisonoperator 運算式- expression 使用 To 關鍵字來指定 testexpression 相符值的範圍界限。 expression1 值必須小於或等於 expression2 值。搭配比較運算子 ( = 、<> 、< 、<= 、> 或 >= ) 來使用 Is 關鍵字,以指定 testexpression 相符值的限制。 若未提供 Is 關鍵字,則會在 comparisonoperator 之前自動插入該關鍵字。只指定 expression 的形式會視為 Is 形式的特殊案例,其中 comparisonoperator 是等號 (= )。 此形式會評估為 testexpression = expression 。expressionlist 中的運算式可以是任何資料類型,前提是這些運算式可以隱含轉換成 testexpression 的類型,並且適當的 comparisonoperator 對其本身所使用的兩種類型有效。 |
statements |
選擇性。 若 testexpression 符合 expressionlist 中的任何子句,則會執行 Case 後面的一或多個陳述式。 |
elsestatements |
選擇性。 若 testexpression 不符合任何 Case 陳述式 expressionlist 中的任何子句,則會執行 Case Else 後面的一或多個陳述式。 |
End Select |
終止 Select ...Case 建構的定義。 |
備註
若 testexpression
符合任何 Case
expressionlist
子句,則該 Case
陳述式後面的陳述式會執行到下一個 Case
、Case Else
或 End Select
陳述式。 然後,控制項會傳遞至 End Select
後面的陳述式。 若 testexpression
符合多個 Case
子句中的 expressionlist
子句,則只會執行第一個相符元素後面的陳述式。
若在任何其他 Case
陳述式中都找不到 testexpression
與 expressionlist
子句之間的相符元素,則 Case Else
陳述式就會用於引進要執行的 elsestatements
。 雖然並非必要,但最好在 Select Case
建構中擁有 Case Else
陳述式來處理未預期的 testexpression
值。 若沒有任何 Case
expressionlist
子句符合 testexpression
,而且沒有任何 Case Else
陳述式,則控制項會傳遞至 End Select
後面的陳述式。
您可以在每個 Case
子句中使用多個運算式或範圍。 例如,下面一行即為有效子句。
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
注意
Case
與 Case Else
陳述式中使用的 Is
關鍵字與 Is Operator 不同,前者用於物件參考比較。
您可以指定字元字串的範圍與多個運算式。 在下列範例中,Case
符合與 "apples" 完全相等的任何字串、依字母順序排列的 "nuts" 與 "soup" 之間具有值,或是包含與目前 testItem
值完全相同的值。
Case "apples", "nuts" To "soup", testItem
Option Compare
的設定可能會影響字串比較。 在 Option Compare Text
下,字串 "Apples" 與 "apples" 會比較為相等,但在 Option Compare Binary
下則不會。
注意
具有多個子句的 Case
陳述式可以展示稱為「最少運算」的行為。 Visual Basic 會從左至右評估子句,若有一個子句產生 testexpression
的相符元素,則不會評估其餘子句。 「最少運算」可以改善效能,但若您預期評估 expressionlist
中的每個運算式,則可能會產生非預期的結果。 如需最少運算的詳細資訊,請參閱布林運算式。
若 Case
或 Case Else
陳述式區塊中的程式碼不需要在區塊中執行任何其他陳述式,則可以使用 Exit Select
陳述式結束區塊。 這會立即將控制項傳送至 End Select
後面的陳述式。
Select Case
建構可進行巢狀處理。 每個巢狀 Select Case
建構都必須有相符的 End Select
陳述式,而且必須完全包含在其進行巢狀處理之外部 Select Case
建構的單一 Case
或 Case Else
陳述式區塊中。
範例
下列範例會使用 Select Case
建構來撰寫對應至變數 number
值的行。 第二個 Case
陳述式包含符合目前 number
值的值,因此會執行撰寫 "Between 6 and 8, inclusive" 的陳述式。
Dim number As Integer = 8
Select Case number
Case 1 To 5
Debug.WriteLine("Between 1 and 5, inclusive")
' The following is the only Case clause that evaluates to True.
Case 6, 7, 8
Debug.WriteLine("Between 6 and 8, inclusive")
Case 9 To 10
Debug.WriteLine("Equal to 9 or 10")
Case Else
Debug.WriteLine("Not between 1 and 10, inclusive")
End Select