Select...Case – příkaz (Visual Basic)

Spustí jednu z několika skupin příkazů v závislosti na hodnotě výrazu.

Syntaxe

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

Součástky

Pojem definice
testexpression Povinný: Výraz. Musí být vyhodnocen jako jeden ze základních datových typů (Boolean, Byte, Char, Date, Double, , IntegerSByteDecimalSingleObjectLongShort, String, , UInteger, a ). ULongUShort
expressionlist Povinné v Case příkazu. Seznam klauzulí výrazů představujících hodnoty shody pro testexpression. Klauzule s více výrazy jsou oddělené čárkami. Každá klauzule může mít jednu z následujících forem:

- expression1Toexpression2
- [ Is ] porovnávací výraz
- Výraz

Pomocí klíčového To slova zadejte hranice rozsahu shodných hodnot pro testexpression. Hodnota expression1 musí být menší nebo rovna hodnotě expression2.

Pomocí klíčového Is slova s relačním operátorem (=, <>, <=<, , >, nebo >=) zadejte omezení hodnot shody pro testexpression. Is Pokud se klíčové slovo nezadá, vloží se automaticky před relačnímoperátorem.

Formulář určený pouze expression je považován za zvláštní případ Is formuláře, ve kterém je porovnávací znaménko (=rovnítko). Tento formulář je vyhodnocen jako testexpression = expression.

Výrazy mohou expressionlist být libovolného datového typu, pokud jsou implicitně konvertibilní na typ testexpression a příslušné comparisonoperator jsou platné pro dva typy, se kterými se používá.
statements Nepovinné. Jeden nebo více příkazů následujících Case po spuštění, pokud testexpression odpovídá jakékoli klauzuli v expressionlist.
elsestatements Nepovinné. Jeden nebo více příkazů následujících po Case Else spuštění, pokud testexpression neodpovídá žádné klauzuli v expressionlist žádném z Case příkazů.
End Select Ukončí definici SelectCase ... konstrukce.

Poznámky

Pokud testexpression se shoduje s libovolnou Caseexpressionlist klauzulí, příkazy následující za tímto Case příkazem se spustí až do dalšího Casepříkazu , Case Elsenebo End Select příkazu. Ovládací prvek pak předá následující End Selectpříkaz . Pokud testexpression odpovídá expressionlist klauzuli ve více než jedné Case klauzuli, pouze příkazy následující za prvním spuštěním shody.

Příkaz Case Else se používá k zavedení elsestatements spuštění, pokud se nenajde žádná shoda mezi testexpression klauzulí a expressionlist klauzulí v některém z ostatních Case příkazů. I když to není povinné, je vhodné mít Case Else ve své Select Case konstrukci prohlášení, které zpracovává nepředvídané testexpression hodnoty. Pokud žádná Caseexpressionlist klauzule neodpovídá testexpression a neexistuje žádný Case Else příkaz, ovládací prvek předá následující End Selectpříkaz .

V každé Case klauzuli můžete použít více výrazů nebo oblastí. Například následující řádek je platný.

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

Poznámka:

Klíčové Is slovo použité v Case příkazech a Case Else není stejné jako Is Operator, který se používá pro porovnání odkazů na objekt.

Pro řetězce znaků můžete zadat rozsahy a více výrazů. V následujícím příkladu Case odpovídá libovolnému řetězci, který je přesně roven "jablkům", má hodnotu mezi "ořechy" a "polévkou" v abecedním pořadí nebo obsahuje přesně stejnou hodnotu jako aktuální hodnota testItem.

Case "apples", "nuts" To "soup", testItem

Nastavení Option Compare může ovlivnit porovnání řetězců. V části Option Compare Textřetězce "Jablka" a "jablka" se porovnávají jako stejné, ale pod Option Compare Binary, ne.

Poznámka:

Příkaz Case s více klauzulemi může vykazovat chování známé jako zkratování. Visual Basic vyhodnocuje klauzule zleva doprava a pokud se vytvoří shoda s testexpression, zbývající klauzule se nevyhodnocují. Zkratování může zvýšit výkon, ale může vést k neočekávaným výsledkům, pokud očekáváte, že se vyhodnotí každý výraz expressionlist . Další informace o zkratování najdete v tématu Logické výrazy.

Pokud kód v bloku nebo Case Else bloku Case příkazu nemusí spouštět žádné další příkazy v bloku, může tento blok ukončit pomocí Exit Select příkazu. Tím se okamžitě přenese řízení na následující End Selectpříkaz .

Select Case konstrukce mohou být vnořeny. Každá vnořená Select Case konstrukce musí mít odpovídající End Select příkaz a musí být zcela obsažena v jednom Case bloku nebo Case Else bloku prohlášení vnější Select Case konstrukce, ve které je vnořena.

Příklad

Následující příklad používá Select Case konstrukci k zápisu řádku odpovídající hodnotě proměnné number. Druhý Case příkaz obsahuje hodnotu, která odpovídá aktuální hodnotě number, takže příkaz, který zapíše "Between 6 and 8, inclusive" spuštění.

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

Viz také