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