Select...Case – příkaz (Visual Basic)
Spustí jednu z několika skupin příkazů v závislosti na hodnotě výrazu.
Syntax
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Součásti
| Pojem | Definice |
|---|---|
testexpression |
Povinná hodnota. Výraz. Musí se vyhodnotit na jeden ze základních datových typů ( , , , , , , , , , , , , , Boolean Byte Char Date Double Decimal Integer Long Object SByte Short Single String UInteger ULong UShort . |
expressionlist |
Vyžaduje se v Case příkazu . Seznam klauzulí výrazů představujících hodnoty shody pro testexpression . Více klauzulí výrazů je odděleno čárkami. Každá klauzule může mít jednu z následujících forem:- výraz1 To výraz2- [ Is ] výraz comparisonoperator - Výraz Pomocí To klíčového slova můžete určit hranice rozsahu hodnot shody pro testexpression . Hodnota musí expression1 být menší nebo rovna hodnotě expression2 .Klíčové slovo Is použijte s operátorem porovnání ( , , , , , nebo ) k určení omezení hodnot = shody pro <> < <= > >= testexpression . Pokud klíčové Is slovo není zadáno, vloží se automaticky před operátor porovnání.Formulář určující pouze je považován za zvláštní případ formuláře, kde operátor porovnání je znaménko expression Is rovná se ( = ). Tento formulář se vyhodnotí jako testexpression = expression .Výrazy v souboru mohou být libovolného datového typu za předpokladu, že jsou implicitně převoditelné na typ a příslušný typ je platný pro dva typy, se které expressionlist testexpression se comparisonoperator používá. |
statements |
Nepovinný parametr. Jeden nebo více následujících Case příkazů, které se spustí, pokud testexpression odpovídá jakékoli klauzuli v expressionlist . |
elsestatements |
Nepovinný parametr. Jeden nebo více následujících Case Else příkazů, které se spustí, pokud neodpovídají žádné klauzuli v žádném testexpression expressionlist z příkazů Case . |
End Select |
Ukončí definici konstrukce Select Case .... |
Poznámky
Pokud testexpression odpovídá jakékoli Case expressionlist klauzuli, příkazy následující za tímto příkazem se spustí až k Case dalšímu příkazu , nebo Case Case Else End Select . Ovládací prvek pak předá do příkazu následujícího End Select za . Pokud testexpression odpovídá expressionlist klauzuli ve více než jedné klauzuli, spustí se pouze Case příkazy následující po první shodě.
Příkaz se používá ke spuštění , pokud není nalezena žádná shoda mezi klauzulí a v Case Else elsestatements žádném z testexpression expressionlist ostatních Case příkazů. I když to není nutné, je vhodné mít ve vaší konstrukci příkaz ke Case Else Select Case zpracování nepředvídatelných testexpression hodnot. Pokud se Case expressionlist žádná testexpression klauzule shoduje a neexistuje žádný Case Else příkaz , ovládací prvek se předá příkazu následujícímu End Select za .
V každé klauzuli můžete použít více výrazů nebo Case rozsahů. Například následující řádek je platný.
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
Poznámka
Klíčové slovo použité v příkazy a není stejné jako operátor Is, který Is se používá pro porovnání odkazů na Case Case Else objekty.
Pro řetězce znaků můžete zadat rozsahy a více výrazů. V následujícím příkladu odpovídá libovolný řetězec, který se přesně rovná Case "apples", má hodnotu mezi "šedou" a "polívkou" v abecedním pořadí nebo obsahuje naprosto stejnou hodnotu jako aktuální hodnota testItem .
Case "apples", "nuts" To "soup", testItem
Nastavení může Option Compare ovlivnit porovnávání řetězců. V Option Compare Text části se řetězce "Apples" a "apples" porovnávají jako stejné, ale v části Option Compare Binary ne.
Poznámka
Příkaz Case s více klauzulemi může vykazovat chování označované jako zkrácené. Visual Basic vyhodnocuje klauzule zleva doprava, a pokud jedna vytvoří shodu s , zbývající testexpression klauzule se nevyhodnocují. Zkrácené zapojení může zlepšit výkon, ale může způsobit neočekávané výsledky, pokud očekáváte, že se vyhodnotí expressionlist každý výraz v . Další informace o zkrácení najdete v tématu Logické výrazy.
Pokud kód v bloku příkazů nebo nemusí spouštět žádné další příkazy v bloku, může tento blok ukončit pomocí Case Case Else příkazu Exit Select . Tím se ovládací prvek přenese okamžitě do příkazu následujícího za End Select .
Select Case Konstrukce mohou být vnořené. Každá vnořená konstrukce musí mít odpovídající příkaz a musí být zcela obsažena v jednom bloku nebo vnější konstrukce, ve které Select Case End Select je Case Case Else Select Case 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ý příkaz obsahuje hodnotu, která odpovídá aktuální hodnotě , takže se spustí příkaz , který zapisuje Case number "Mezi 6 a 8 včetně".
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