Operatore OrElse (Visual Basic)
Esegue una disgiunzione logica inclusiva di corto circuito tra due espressioni.
result = expression1 OrElse expression2
Parti
result
Obbligatorio. Qualsiasi espressione Boolean.expression1
Obbligatorio. Qualsiasi espressione Boolean.expression2
Obbligatorio. Qualsiasi espressione Boolean.
Note
Un'operazione logica viene definita di corto circuito se il codice compilato può evitare la valutazione di un'espressione sulla base del risultato di un'altra espressione. Se il risultato della prima espressione valutata determina il risultato finale dell'operazione, non sarà necessario valutare la seconda espressione, in quanto non potrà modificare il risultato finale. Il meccanismo di corto circuito può migliorare le prestazioni se l'espressione ignorata è complessa o se prevede anche chiamate di routine.
Se una o entrambe le espressioni restituiscono True, anche result sarà True. Nella tabella riportata di seguito viene illustrato come si determina il valore di result.
Se expression1 è |
Ed expression2 è |
Il valore di result sarà |
---|---|---|
True |
(non valutato) |
True |
False |
True |
True |
False |
False |
False |
Tipi di dati
L'operatore OrElse è definito solo per il Tipo di dati Boolean (Visual Basic). Ciascun operando viene convertito, se necessario, in Boolean e l'operazione viene eseguita interamente in Boolean. Se si assegna il risultato a un tipo numerico, tale risultato viene convertito da Boolean nel tipo specificato. Questa operazione può determinare un comportamento imprevisto. Ad esempio, il risultato di 5 OrElse 12 è –1 se viene eseguita la conversione in Integer.
Overload
L'Operatore Or (Visual Basic) e l'Operatore IsTrue (Visual Basic) possono essere sottoposti a overload. In altri termini, una classe o una struttura può ridefinirne il comportamento quando un operando specifica il tipo di tale classe o struttura. L'esecuzione dell'overload degli operatori Or e IsTrue ha effetto sul comportamento dell'operatore OrElse. Se il codice utilizza OrElse su una classe o una struttura che esegue l'overload di Or e IsTrue, è importante comprendere il comportamento ridefinito da tali operatori. Per ulteriori informazioni, vedere Routine di operatore (Visual Basic).
Esempio
Nell'esempio riportato di seguito l'operatore OrElse viene utilizzato per eseguire la disgiunzione logica tra due espressioni. Il risultato è un valore Boolean che indica se una delle due espressioni è True. Se la prima espressione è True, la seconda non verrà 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
I risultati ottenuti dall'esempio precedente sono rispettivamente True, True e False. Nel calcolo di firstCheck la seconda espressione non viene valutata perché la prima è già True. La seconda espressione, tuttavia, viene valutata nel calcolo di secondCheck.
Nell'esempio riportato di seguito viene visualizzata un'istruzione If...Then contenente due chiamate di routine. Se la prima chiamata restituisce True, la seconda routine non verrà chiamata. Questa operazione può generare risultati imprevisti se la seconda routine esegue attività importanti che dovrebbero essere sempre eseguite durante l'esecuzione di questa sezione di 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
Vedere anche
Riferimenti
Operatori logici e bit per bit (Visual Basic)
Precedenza tra gli operatori in Visual Basic
Elenco degli operatori per funzionalità (Visual Basic)
Operatore IsTrue (Visual Basic)