Ejecuta uno de varios grupos de instrucciones, según el valor de una expresión.
Si testexpression coincide con cualquier cláusula de Case expressionlist, se ejecutan las instrucciones situadas a continuación de Case hasta la siguiente instrucción Case, Case Else o End Select. El control pasa después a la instrucción que sigue a End Select. Si testexpression coincide con una cláusula expressionlist en más de una cláusula Case, sólo se ejecutan las instrucciones situadas después de la primera coincidencia.
La instrucción Case Else se utiliza para introducir las elsestatements que se deben ejecutar si no se encuentra ninguna coincidencia entre las cláusulas testexpression y expressionlist de cualquiera de las demás instrucciones Case. Aunque no es necesario, es aconsejable tener una instrucción Case Else en su construcción Select Case para controlar los valores testexpression imprevistos. Si no coincide ninguna cláusula Case expressionlist con testexpression y no hay ninguna instrucción Case Else, el control pasa a la instrucción End Select siguiente.
Se pueden utilizar varias expresiones o intervalos en cada cláusula Case. Por ejemplo, la línea siguiente es válida.
Case 1 To 4, 7 To 9, 11, 13, Is > maxNumber
Nota: |
---|
La palabra clave Is utilizada en las instrucciones Case y Case Else no es igual que Is (Operador, Visual Basic), que se utiliza para la comparación de referencias a objetos. |
Puede especificar intervalos y varias expresiones para cadenas de caracteres. En el ejemplo siguiente, Case coincide con cualquier cadena que sea exactamente igual a "apples", tenga un valor comprendido entre "nuts" y "soup" en orden alfabético, o contenga el mismo valor exacto que el valor actual de testItem.
Case "apples", "nuts" To "soup", testItem
El valor de Option Compare puede afectar a las comparaciones de cadenas. Bajo Option Compare Text, las cadenas "Apples" y "apples" se comparan como iguales, pero no bajo Option Compare Binary.
Nota: |
---|
Una instrucción Case con varias cláusulas puede exhibir el comportamiento conocido como cortocircuitar. Visual Basic evalúa las cláusulas de izquierda a derecha y, si una de ellas coincide con testexpression, no se evalúan las cláusulas restantes. El procedimiento de cortocircuitar puede mejorar el rendimiento, pero puede generar resultados inesperados si está esperando que se evalúen todas las expresiones de expressionlist. Para obtener más información sobre cómo cortocircuitar, vea Expresiones booleanas. |
Si el código contenido en un bloque de instrucciones Case o Case Else no necesita ejecutar más instrucciones contenidas en el bloque, puede salir del bloque utilizando la instrucción Exit Select. Esto transfiere inmediatamente el control a la instrucción que sigue a End Select.
Las construcciones Select Case se pueden anidar. Cada construcción Select Case anidada debe tener una instrucción End Select coincidente y estar completamente contenida dentro de un único bloque de instrucción Case o Case Else de la construcción Select Case más exterior dentro de la cual está anidada.
En el ejemplo siguiente se utiliza una construcción Select Case para escribir una línea correspondiente al valor de la variable number. La segunda instrucción Case contiene el valor que coincide con el valor actual de number, por lo que se ejecuta la instrucción que escribe "Between 6 and 8, inclusive".
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
No hay comentarios:
Publicar un comentario