Select...Case 陳述式 (Visual Basic)

根據運算式的值,執行幾組陳述式中的一組。

語法

Select [ Case ] testexpression  
    [ Case expressionlist  
        [ statements ] ]  
    [ Case Else  
        [ elsestatements ] ]  
End Select  

組件

詞彙 定義
testexpression 必要。 運段式。 必須評估為其中一個基本資料類型 (BooleanByteCharDateDoubleDecimalIntegerLongObjectSByteShortSingleStringUIntegerULongUShort)。
expressionlist Case 陳述式中的必要元素。 運算式子句的清單,表示 testexpression 的相符值。 多個運算式子句會以逗號分隔。 每個子句都可以採用下列其中一種形式:

- expression1Toexpression2
- [ Is ] comparisonoperatorexpression
- 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 符合任何 Caseexpressionlist 子句,則該 Case 陳述式後面的陳述式會執行到下一個 CaseCase ElseEnd Select 陳述式。 然後,控制項會傳遞至 End Select 後面的陳述式。 若 testexpression 符合多個 Case 子句中的 expressionlist 子句,則只會執行第一個相符元素後面的陳述式。

若在任何其他 Case 陳述式中都找不到 testexpressionexpressionlist 子句之間的相符元素,則 Case Else 陳述式就會用於引進要執行的 elsestatements。 雖然並非必要,但最好在 Select Case 建構中擁有 Case Else 陳述式來處理未預期的 testexpression 值。 若沒有任何 Caseexpressionlist 子句符合 testexpression,而且沒有任何 Case Else 陳述式,則控制項會傳遞至 End Select 後面的陳述式。

您可以在每個 Case 子句中使用多個運算式或範圍。 例如,下面一行即為有效子句。

Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber

注意

CaseCase 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 中的每個運算式,則可能會產生非預期的結果。 如需最少運算的詳細資訊,請參閱布林運算式

CaseCase Else 陳述式區塊中的程式碼不需要在區塊中執行任何其他陳述式,則可以使用 Exit Select 陳述式結束區塊。 這會立即將控制項傳送至 End Select 後面的陳述式。

Select Case 建構可進行巢狀處理。 每個巢狀 Select Case 建構都必須有相符的 End Select 陳述式,而且必須完全包含在其進行巢狀處理之外部 Select Case 建構的單一 CaseCase 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

另請參閱