OrElse (Operador) (Visual Basic)

Realiza una disyunción lógica inclusiva de cortocircuito en dos expresiones.

Sintaxis

result = expression1 OrElse expression2  

Partes

result
Obligatorio. Cualquier expresión Boolean .

expression1
Obligatorio. Cualquier expresión Boolean .

expression2
Obligatorio. Cualquier expresión Boolean .

Comentarios

Se dice que una operación lógica es de cortocircuito si el código compilado puede omitir la evaluación de una expresión en función del resultado de otra expresión. 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 puede cambiar el resultado final. El cortocircuito puede mejorar el rendimiento si la expresión omitida es compleja o si implica llamadas a procedimientos.

Si una o ambas expresiones se evalúan como True, result es True. En la tabla siguiente se muestra cómo se determina result.

Si expression1 es Y expression2 es El valor de result es
True (sin evaluar) True
False True True
False False False

Tipo de datos

El operador OrElse solo se define para el tipo de datos booleano. Visual Basic convierte cada operando según sea necesario en Boolean antes de evaluar la expresión. Si asigna el resultado a un tipo numérico, Visual Basic lo convierte de Boolean a ese tipo, de forma que False se convierte 0 en y True se convierte en -1. Para más información, consulte las conversiones de tipos booleanos.

Sobrecarga

El operador Or y el operador IsTrue pueden sobrecargarse, lo que significa que una clase o estructura puede redefinir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. La sobrecarga de los operadores Or y IsTrue afecta al comportamiento del operador OrElse. Si el código usa OrElse en una clase o estructura que sobrecarga Or y IsTrue, asegúrese de comprender su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.

Ejemplo 1

En el ejemplo siguiente se usa el operador OrElse para realizar una disyunción lógica en dos expresiones. El resultado es un valor Boolean que representa si cualquiera de las dos expresiones es true. Si la primera expresión es True, no se evalúa la segunda.

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

En el ejemplo anterior se generan los resultados True, True y False, respectivamente. En el cálculo de firstCheck, la segunda expresión no se evalúa porque la primera ya es True. Sin embargo, la segunda expresión se evalúa en el cálculo de secondCheck.

Ejemplo 2

En el ejemplo siguiente se muestra una instrucción If...Then que contiene dos llamadas a procedimiento. Si la primera llamada devuelve True, no se llama al segundo procedimiento. Esto podría producir resultados inesperados si el segundo procedimiento realiza tareas importantes que deban realizarse siempre cuando se ejecuta 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

Consulte también