Operatore OrElse (Visual Basic)

Esegue la disgiunzione logica inclusiva a corto circuito su due espressioni.

Sintassi

result = expression1 OrElse expression2  

Parti

result
Obbligatorio. Qualsiasi espressione Boolean .

expression1
Obbligatorio. Qualsiasi espressione Boolean .

expression2
Obbligatorio. Qualsiasi espressione Boolean .

Osservazioni:

Un'operazione logica viene detta in corto circuito se il codice compilato può ignorare la valutazione di un'espressione a seconda del risultato di un'altra espressione. Se il risultato della prima espressione valutata determina il risultato finale dell'operazione, non è necessario valutare la seconda espressione, perché non può modificare il risultato finale. Il corto circuito può migliorare le prestazioni se l'espressione ignorata è complessa o se comporta chiamate di routine.

Se una o entrambe le espressioni restituiscono True, result è True. Nella tabella seguente viene illustrato come result viene determinato.

Se expression1 è E expression2 è Il valore di result è
True (non valutato) True
False True True
False False False

Tipi di dati

L'operatore OrElse è definito solo per il tipo di dati booleano. Visual Basic converte ogni operando in Boolean in base alle esigenze prima di valutare l'espressione. Se si assegna il risultato a un tipo numerico, Visual Basic lo converte da Boolean a tale tipo in modo che False diventi 0 e True diventi -1. Per altre informazioni, vedere Conversioni di tipi booleani.

Overload

L'operatore Or e l'operatore IsTrue possono essere sottoposti a overload, il che significa che una classe o una struttura può ridefinirne il comportamento quando un operando ha il tipo di tale classe o struttura. L'overload degli operatori Or e IsTrue influisce sul comportamento dell'operatore OrElse. Se il codice usa OrElse su una classe o una struttura che esegue l'overload di Or e IsTrue, assicurarsi di comprenderne il comportamento ridefinito. Per altre informazioni, vedere Operator Procedures.

Esempio 1

Nell'esempio seguente viene usato l'operatore OrElse per eseguire una disgiunzione logica su due espressioni. Il risultato è un valore Boolean che indica se una delle due espressioni è true. Se la prima espressione è True, la seconda non viene valutata.

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

L'esempio precedente produce rispettivamente i risultati di True, True e False. Nel calcolo di firstCheck, la seconda espressione non viene valutata perché la prima è già True. Tuttavia, la seconda espressione viene valutata nel calcolo di secondCheck.

Esempio 2

L'esempio seguente illustra un'istruzione If...Then contenente due chiamate di routine. Se la prima chiamata restituisce True, la seconda routine non viene chiamata. Questo potrebbe produrre risultati imprevisti se la seconda procedura esegue attività importanti che devono essere sempre eseguite quando viene eseguita questa sezione del codice.

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

Vedi anche