El operador Select Case se utiliza para verificar el valor de una expresión contra uno o más casos. Es una alternativa a varios If...ElseIf anidados, lo que hace que el código sea más limpio y fácil de leer.
Características:
Case puede incluir rangos (Case 1 To 10), valores individuales (Case 2, 4, 6), expresiones complejas (Case Is > 100).Casos complejos:
Dim status As Integer = 7 Select Case status Case 1 To 5 Console.WriteLine("De 1 a 5") Case 6, 7, 8 Console.WriteLine("De 6 a 8") Case Is > 10 Console.WriteLine("Mayor que 10") Case Else Console.WriteLine("Otro valor") End Select
Diferencias con If...ElseIf:
If...ElseIf permite construir verificaciones más flexibles con operadores lógicos.Pregunta: “¿Cómo se comportará Select Case al verificar un valor de cadena, si los casos difieren en el registro de caracteres?”
Respuesta correcta: La comparación en Select Case se realiza teniendo en cuenta el parámetro Option Compare. Por defecto, la comparación en Visual Basic no es sensible a mayúsculas y minúsculas (Option Compare Text), pero puede ser cambiada (Option Compare Binary). Si se activa Option Compare Binary, "test" y "Test" se considerarán diferentes.
Ejemplo:
' Al principio del archivo: ' Option Compare Binary Dim txt As String = "Test" Select Case txt Case "test" Console.WriteLine("¿Funcionará? No") Case "Test" Console.WriteLine("¿Funcionará? Sí") End Select
Historia
En un proyecto de seguimiento de inventarios, se compararon identificadores numéricos como cadenas en Select Case. Al recodificar datos, algunos casos no coincidieron debido a diferentes codificaciones y diferencias en el registro, lo que llevó a una categorización incorrecta.
Historia
En el desarrollo de foros en línea, se utilizó el rango Case 1 To 10 para verificar el rango del usuario, pero se cometió un error en el Boundary Value (valor límite): al status=10, la sección no se activaba debido a la falta de atención al diseñar.
Historia
En una aplicación bancaria, se intentó verificar dos variables a la vez dentro de un Case (Case a > 5 And b < 3). El código se compiló con error, y cambiar a If...ElseIf ayudó a identificar errores en la lógica de enrutamiento de operaciones.