Selecione...Instrução case (Visual Basic)
Executa um dos vários grupos de instruções, dependendo do valor de uma expressão.
Select [ Case ] testexpression
[ Case expressionlist
[ statements ] ]
[ Case Else
[ elsestatements ] ]
End Select
Partes
Termo |
Definição |
testexpression |
Obrigatório.Expressão.Must evaluate to one of the elementary data types (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, and UShort). |
expressionlist |
Necessária em uma declaração Case.Lista de cláusulas de expressões que representam valores correspondentes para testexpression.Várias cláusulas expressão são separadas por vírgulas.Cada cláusula pode ter uma das seguintes formas:
Use a palavra-chave Topara especificar os limites de um intervalo de valores de correspondência de testexpression.O valor de expression1 deve ser menor ou igual ao valor de expression2. Use a palavra-chave Is com um operador de comparação (=, <>,<,<=, >,ou >=) para especificar uma restrição testexpression nos valores de correspondência.Se a palavra-chave Is não for fornecida, ela é automaticamente inseridoa antes de comparisonoperator . O formulário especificando somente expression é tratado como um caso especial do formulário Is Onde comparisonoperator é o sinal de igualdade (=).Este formulário é avaliado como testexpression = expression. As expressões em expressionlist podem ser de qualquer tipo de dados, contanto que sejam implicitamente conversíveis para o tipo de testexpression e o comparisonoperator apropriado é válido para os dois tipos com os quais ele está sendo usado. |
statements |
Opcional.Uma ou mais instruções depois de Case que executam se testexpression coincide com qualquer cláusula na expressionlist. |
elsestatements |
Opcional.Uma ou mais instruções após Case Else que executam se testexpression não coincide com nenhuma cláusula na expressionlist de qualquer uma das instruções Case. |
End Select |
Finaliza a definição da construção Select... Case. |
Comentários
Se testexpression coincidir com qualquer cláusula Caseexpressionlist,as instruções depois da instrução Case executam até as próximas instruções Case, Case Else,ou End Select.O controle, em seguida, passa para a instrução depois de End Select.Se testexpression coincidir com uma cláusula expressionlist em mais de uma cláusula Case , somente as instruções depois da primeira correspondência são executadas.
A instrução Case Else é usada para apresentar o elsestatements para executar se nenhuma correspondência for encontrada entre testexpression e uma cláusula expressionlistem qualquer uma das outras instruções Case.Embora não seja necessário, é uma boa ideia para ter uma instrução Case Else em sua construção Select Case para tratar valores testexpression imprevisíveis.Se nenhuma cláusula Caseexpressionlist coincide com testexpression e não houver nenhuma instrução Case Else,o controle passa para a instrução depois de End Select.
Você pode usar várias expressões ou intervalos em cada cláusula Case.Por exemplo, a seguinte linha é válida.
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
Observação |
---|
A palavra-chave Is usada nas instruções Case e Case Else não é a mesma que É o operador (Visual Basic), que é usada para comparação de referência de objeto. |
Você pode especificar várias expressões para caracteres de strings.No exemplo a seguir, Case corresponde a qualquer string que é exatamente igual a "apples", tem um valor entre "nuts" e "sopa" em ordem alfabética, ou contém o mesmo valor que o valor atual do testItem.
Case "apples", "nuts" To "soup", testItem
A configuração de Option Compare pode afetar comparações de sequência de caracteres.Em Option Compare Text,as strings "Apples" e "apples" são comparar como iguais, mas em Option Compare Binary, não.
Observação |
---|
Uma instrução Case com várias cláusulas pode apresentar comportamento conhecido como short-circuiting.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.SHORT-circuiting pode melhorar o desempenho, mas ele pode produzir resultados inesperados se você está esperando que cada expressão no expressionlist seja avaliada.Para obter mais informações sobre Short-circuiting, consulte Expressões booleanas (Visual Basic). |
Se o código em um bloco de declaração Case ou Case Else não precisa mais executar nenhuma das declarações no bloco, ele pode sair do bloco usando a instrução Exit Select.Isso transfere o controle imediatamente para a instrução depois de End Select.
Construções Select Case podem ser aninhadas.Cada construção Select Case aninhada deve ter uma instrução End Select correspondente e deve estar completamente contida em um único bloco de declaração Case ou Case Else da construção Select Case externa dentro do qual ela está aninhado.
Exemplo
O exemplo a seguir usa uma construção Select Case para gravar uma linha correspondente ao valor da variável number.A segunda instrução Casecontém o valor que corresponde ao valor atual do number,portanto, a instrução que grava "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