No es el Lo mismo que usar la palabra clave break
con switch
sentencias de idiomas similares a C. Con un switch
, si omite el control de interrupción, pasará al siguiente caso. Con Visual Basic Select
, el control no falla; un break
ya está implícito.
Sin embargo, se puede usar como una cláusula de guardia, para evitar la necesidad de código de nido de otro nivel en un bloque de if
. Por ejemplo:
Select Case SomeEnumVar
Case SomeEnum.SomeValue1
If Not SomeCondition Then Exit Select
'Do something
Case SomeEnum.SomeValue2
'Do something else
Case Else
'Default case
End Select
Eso es un poco mejor que el código equivalente:
Select Case SomeEnumVar
Case SomeEnum.SomeValue1
If SomeCondition Then
'Do something
End If
Case SomeEnum.SomeValue2
'Do something else
Case Else
'Default case
End Select
Cualquier diferencia de rendimiento entre estas dos muestras es casi seguro insignificante en comparación con otros factores.
Otro uso es si usted tiene una gran cantidad de casos, y uno de los casos está colocado de manera que un partido significa que desea detener la comprobación de todos los demás. Esto ya sucede, por lo que puede tener una declaración de caso vacía allí. Pero también puede agregar una selección de salida para dejar claro a los mantenedores que espera que este caso no haga nada más.
Realmente creo que el segundo ejemplo es mucho mejor que el primero porque el segundo es estructurado y el primero no. Las instrucciones que rompen el flujo de ejecución (como Goto, Exits, etc.) desestructuran el código. –
@SoMoS: Me gusta tener cláusulas de guardia al principio de los métodos para verificar las condiciones previas, pero en el medio de un Caso Selecto, tiendo a estar de acuerdo con usted en que el segundo ejemplo es mejor en la mayoría de los casos. –