Instrucción Select...Case (Visual Basic)

Ejecuta uno de varios grupos de instrucciones, dependiendo del valor de una expresión.

Sintaxis

Select [ Case ] testexpression  
    [ Case expressionlist  
        [ statements ] ]  
    [ Case Else  
        [ elsestatements ] ]  
End Select  

Partes

Término Definición
testexpression Obligatorio. Expresión. Debe evaluarse como uno de los tipos de datos elementales ( Boolean , , , , , , Byte Char Date Double y Decimal Integer Long Object SByte Short Single String UInteger ULong UShort ).
expressionlist Requerido en una Case instrucción . Lista de cláusulas de expresión que representan valores de coincidencia para testexpression . Varias cláusulas de expresión están separadas por comas. Cada cláusula puede tomar una de las formas siguientes:

- expression1 To expression2
- [ Is ] expresión comparisonoperator
- Expresión

Use la To palabra clave para especificar los límites de un intervalo de valores de coincidencia para testexpression . El valor de expression1 debe ser menor o igual que el valor de expression2 .

Use la palabra clave con un operador de comparación ( , , , , o ) para especificar una restricción en Is los valores de coincidencia para = <> < <= > >= testexpression . Si no Is se proporciona la palabra clave , se inserta automáticamente antes de comparisonoperator.

El formulario que especifica solo se trata como un caso especial del formulario donde expression Is comparisonoperator es el signo igual ( = ). Este formulario se evalúa como testexpression = expression .

Las expresiones de pueden ser de cualquier tipo de datos, siempre que sean implícitamente convertibles al tipo de y el adecuado sea válido para los dos tipos con los que expressionlist testexpression se comparisonoperator usa.
statements Opcional. Una o varias instrucciones siguientes que Case se ejecutan si coincide con cualquier cláusula de testexpression expressionlist .
elsestatements Opcional. Una o varias instrucciones siguientes Case Else que se ejecutan si no coinciden con ninguna cláusula de de ninguna de las instrucciones testexpression expressionlist Case .
End Select Finaliza la definición de Select la construcción Case ... .

Comentarios

Si coincide con cualquier cláusula , las instrucciones siguientes a esa instrucción se testexpression ejecutan hasta la siguiente instrucción , o Case expressionlist Case Case Case Else End Select . Después, el control pasa a la instrucción End Select siguiente. Si testexpression coincide con una cláusula de más de una cláusula, solo las instrucciones siguientes a la primera ejecución de expressionlist Case coincidencia.

La instrucción se usa para introducir para ejecutar si no se encuentra ninguna coincidencia entre y Case Else una cláusula en cualquiera de las elsestatements testexpression expressionlist Case otras instrucciones. Aunque no es necesario, es una buena idea tener una instrucción en la construcción para controlar valores Case Else Select Case testexpression imprevistos. Si ninguna Case expressionlist cláusula coincide y no hay ninguna testexpression instrucción , el control pasa a la instrucción Case Else End Select siguiente.

Puede usar varias expresiones o intervalos en cada Case cláusula. Por ejemplo, la siguiente línea es válida.

Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber

Nota

La palabra clave usada en las instrucciones y no es la misma que el operador Is , que se Is usa para la comparación de referencias a Case Case Else objetos.

Puede especificar intervalos y varias expresiones para cadenas de caracteres. En el ejemplo siguiente, coincide con cualquier cadena que sea exactamente igual a "apples", tiene un valor entre Case "reancha" y "manzana" en orden alfabético, o contiene exactamente el mismo valor que el valor actual de testItem .

Case "apples", "nuts" To "soup", testItem

La configuración de Option Compare puede afectar a las comparaciones de cadenas. En Option Compare Text , las cadenas "Apples" y "apples" se comparan como iguales, pero en Option Compare Binary , no lo hacen.

Nota

Una Case instrucción con varias cláusulas puede presentar un comportamiento conocido como cortocircuito. Visual Basic evalúa las cláusulas de izquierda a derecha y, si se produce una coincidencia con , no se evalúan las testexpression cláusulas restantes. El cortocircuito puede mejorar el rendimiento, pero puede producir resultados inesperados si espera que se expressionlist evalúen todas las expresiones de . Para obtener más información sobre el cortocircuito, vea Expresiones booleanas.

Si el código dentro de un bloque de instrucciones o no necesita ejecutar más instrucciones en el bloque , puede salir del bloque Case Case Else mediante la instrucción Exit Select . Esto transfiere el control inmediatamente a la instrucción End Select siguiente.

Select Case las construcciones se pueden anidar. Cada construcción anidada debe tener una instrucción correspondiente y debe estar completamente contenida dentro de un único bloque de instrucciones o de la construcción externa en la que Select Case End Select está Case Case Else Select Case anidada.

Ejemplo

En el ejemplo siguiente se usa Select Case una construcción para escribir una línea correspondiente al valor de la variable number . La segunda instrucción contiene el valor que coincide con el valor actual de , por lo que la instrucción que escribe Case number "Entre 6 y 8, inclusive" se ejecuta.

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

Consulta también