Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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, , DecimalIntegerLongObjectSByteShortSingle, 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:- výraz 1 Tovýraz2- [ 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 bloku Case Else 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