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, IntegerLongObject, SByte, SingleStringUIntegerShortULonge ).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 Elseou 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

Consulte também