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:

  • expressão1 To Expressão2

  • IsOperadorDeComparaçãoexpressão 

  • expression

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çãoObservaçã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çãoObservaçã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

Consulte também

Referência

Choose

Instrução End

IF...Então...Instrução else (Visual Basic)

Instrução Option Compare

Sair de instrução (Visual Basic)