Compartir a través de


OrElse (Operador) (Visual Basic)

Realiza una disyunción lógica inclusiva "cortocircuitada" en dos expresiones.

result = expression1 OrElse expression2

Elementos

  • 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. En la tabla siguiente se ilustra cómo se determina el argumento result.

Si el valor de 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 solo se define para Boolean (Tipo de datos, Visual Basic). Visual Basic convierte cada operando según sea necesario a Boolean y lleva a cabo 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) (Visual Basic) 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 (Visual Basic).

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

Referencia

Operadores lógicos y bit a bit (Visual Basic)

Prioridad de operador en Visual Basic

Operadores enumerados por funcionalidad (Visual Basic)

Or (Operador, Visual Basic)

IsTrue (Operador) (Visual Basic)

Conceptos

Operadores lógicos y bit a bit en Visual Basic