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 , , Integer SByte Decimal Single Object Long Short , String , , UInteger , a ). ULong UShort |
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:- expression1 To expression2- [ 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 Select Case ... konstrukce. |
Poznámky
Pokud testexpression
se shoduje s libovolnou Case
expressionlist
klauzulí, příkazy následující za tímto Case
příkazem se spustí až do dalšího Case
příkazu , Case Else
nebo End Select
příkazu. Ovládací prvek pak předá následující End Select
pří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á Case
expressionlist
klauzule neodpovídá testexpression
a neexistuje žádný Case Else
příkaz, ovládací prvek předá následující End Select
pří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 Select
pří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