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

Viz také