OrElse (Operador)
Actualización: noviembre 2007
Realiza una disyunción lógica inclusiva "cortocircuitada" en dos expresiones.
result = expression1 OrElse expression2
Partes
result
Obligatorio. Cualquier expresión de tipo Boolean.expression1
Obligatorio. Cualquier expresión de tipo Boolean.expression2
Obligatorio. Cualquier expresión de tipo Boolean.
Comentarios
Se dice que una operación lógica se encuentra cortocircuitada si el código compilado puede omitir la evaluación de una expresión en función del resultado de otra. Si el resultado de la primera expresión evaluada determina el resultado final de la operación, no es necesario evaluar la segunda expresión, ya que no cambiará el resultado final. La evaluación cortocircuitada puede mejorar el rendimiento si la expresión omitida es compleja o si implica llamadas de procedimiento.
Si una o ambas expresiones se evalúan como True, result es True. La tabla siguiente ilustra cómo se determina el argumento result.
Si expression1 es: |
Y expression2 es |
El valor de result es |
---|---|---|
True |
(no se evalúa) |
True |
False |
True |
True |
False |
False |
False |
Tipos de datos
El operador OrElse sólo se define para Boolean (Tipo de datos, Visual Basic). Visual Basic convierte cada operando tal como sea necesario en Boolean y realiza toda la operación en Boolean. Si asigna el resultado a un tipo numérico, Visual Basic lo convierte de Boolean a ese tipo. Esto podría generar un comportamiento inesperado. Por ejemplo, 5 OrElse 12 tiene como resultado –1 cuando se convierte en Integer.
Sobrecarga
Or (Operador, Visual Basic) e IsTrue (Operador) se pueden sobrecargar, lo que significa que una clase o estructura puede definir de nuevo su comportamiento cuando un operando tiene el tipo de dicha clase o estructura. La sobrecarga de los operadores Or e IsTrue afecta al comportamiento del operador OrElse. Si el código utiliza OrElse en una clase o estructura que sobrecarga Or e IsTrue, asegúrese de conocer su comportamiento redefinido. Para obtener más información, vea Procedimientos de operador.
Ejemplo
En el ejemplo siguiente se usa el operador OrElse para realizar una disyunción lógica entre dos expresiones. El resultado será un valor de tipo Boolean que indicará si alguna de las dos expresiones es verdadera (True). Si la primera expresión es True, la segunda no será evaluada.
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b
El ejemplo anterior genera unos resultados de True, True y False, respectivamente. En el cálculo de firstCheck, no se evalúa la segunda expresión porque la primera ya es True. Sin embargo, la segunda expresión se evalúa en el cálculo de secondCheck.
En el ejemplo siguiente se muestra la instrucción If...Then que contiene dos llamadas a procedimientos. Si la primera llamada devuelve True, no se llama al segundo procedimiento. Esto puede generar resultados inesperados si el segundo procedimiento realiza tareas importantes que se deben realizar siempre que se ejecute esta sección del código.
If testFunction(5) = True OrElse otherFunction(4) = True Then
' If testFunction(5) is True, otherFunction(4) is not called.
' Insert code to be executed.
End If
Vea también
Conceptos
Operadores lógicos y bit a bit en Visual Basic
Referencia
Operadores lógicos y operadores bit a bit
Prioridad de operador en Visual Basic