Selecionar... Instrução de caso (Visual Basic)
Executa um dos vários grupos de instruções, dependendo do valor de uma expressão.
Sintaxe
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Partes
Termo | Definição |
---|---|
testexpression |
Obrigatório. Expressão. Deve avaliar para um dos tipos de dados elementares (Boolean , Byte , Char , Date , Double , Decimal , Integer Long Object , SByte , Single String UInteger Short ULong e ).UShort |
expressionlist |
Obrigatório em uma Case declaração. Lista de cláusulas de expressão que representam valores correspondentes para testexpression . As cláusulas de expressão múltipla são separadas por vírgulas. Cada cláusula pode assumir uma das seguintes formas:- expressão1 To expressão2- [ Is ] expressão do operador de comparação- expressão Use a To palavra-chave para especificar os limites de um intervalo de valores de correspondência para testexpression . O valor de expression1 deve ser menor ou igual ao valor de expression2 .Use a Is palavra-chave com um operador de comparação (= , <> , < , <= > , , ou >= ) para especificar uma restrição nos valores de correspondência para testexpression . Se a palavra-chave não for fornecida, ela é inserida automaticamente antes do Is operador de comparação.O formulário que especifica apenas expression é tratado como um caso especial do formulário em que o Is operador de comparação é o sinal de igual (= ). Este formulário é avaliado como testexpression = expression .As expressões em expressionlist podem ser de qualquer tipo de dados, desde que sejam implicitamente conversíveis para o tipo de e o apropriado comparisonoperator seja válido para os dois tipos com testexpression os quais está sendo usado. |
statements |
Opcional. Uma ou mais instruções após Case essa execução se testexpression corresponderem a qualquer cláusula em expressionlist . |
elsestatements |
Opcional. Uma ou mais instruções a seguir Case Else a essa execução se testexpression não corresponderem a nenhuma cláusula em expressionlist qualquer uma das Case declarações. |
End Select |
Termina a definição da Select ...Case construção. |
Observações
Se testexpression
corresponder a qualquer expressionlist
Case
cláusula, as instruções que seguem essa Case
instrução serão executadas até a próxima Case
, Case Else
ou End Select
instrução. Em seguida, Control passa para a instrução seguinte End Select
. Se testexpression
corresponder a uma expressionlist
cláusula em mais de uma Case
cláusula, apenas as instruções após a primeira correspondência serão executadas.
A Case Else
instrução é usada para introduzir o elsestatements
to run se nenhuma correspondência for encontrada entre a testexpression
cláusula e uma em qualquer uma expressionlist
das outras Case
instruções. Apesar de não ser obrigatório, é uma boa ideia ter uma Case Else
declaração na sua Select Case
construção para lidar com valores imprevistos testexpression
. Se nenhuma Case
expressionlist
cláusula corresponder testexpression
e não houver nenhuma Case Else
instrução, o controle passará para a instrução a seguir End Select
.
Você pode usar várias expressões ou intervalos em cada Case
cláusula. Por exemplo, a seguinte linha é válida.
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
Nota
A Is
palavra-chave usada nas Case
instruções and Case Else
não é a mesma que o operador Is, que é usado para comparação de referência de objeto.
Você pode especificar intervalos e várias expressões para cadeias de caracteres. No exemplo a seguir, Case
corresponde a qualquer string que é exatamente igual a "apples", tem um valor entre "nuts" e "soup" em ordem alfabética ou contém exatamente o mesmo valor que o valor atual de testItem
.
Case "apples", "nuts" To "soup", testItem
A configuração de pode afetar comparações de cadeia de Option Compare
caracteres. Em Option Compare Text
, as cordas "Maçãs" e "maçãs" comparam-se como iguais, mas em Option Compare Binary
, não o fazem.
Nota
Uma Case
instrução com várias cláusulas pode apresentar um comportamento conhecido como curto-circuito. Visual Basic avalia as cláusulas da esquerda para a direita, e se uma produz uma correspondência com testexpression
, as cláusulas restantes não são avaliadas. O curto-circuito pode melhorar o desempenho, mas pode produzir resultados inesperados se você estiver esperando que cada expressão seja expressionlist
avaliada. Para obter mais informações sobre curto-circuito, consulte Expressões booleanas.
Se o código dentro de um Case
bloco de instrução ou Case Else
não precisar executar mais nenhuma das instruções no bloco , ele pode sair do bloco usando a Exit Select
instrução. Isso transfere o controle imediatamente para a instrução seguinte End Select
.
Select Case
as construções podem ser aninhadas. Cada construção aninhada Select Case
deve ter uma instrução correspondente End Select
e deve estar completamente contida dentro de um único Case
bloco ou Case Else
bloco de instrução da construção externa Select Case
na qual está aninhada.
Exemplo
O exemplo a seguir usa uma Select Case
construção para escrever uma linha correspondente ao valor da variável number
. A segunda Case
instrução contém o valor que corresponde ao valor atual de number
, portanto, a instrução que escreve "Entre 6 e 8, inclusive" é executada.
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