Espressioni booleane (Visual Basic)

Un'espressione booleana è un'espressione che restituisce un valore del tipo di dati booleano: True o False. Le espressioni Boolean possono assumere diverse forme. La più semplice è il confronto diretto del valore di una variabile Boolean con un valore letterale Boolean, come illustrato nell'esempio seguente.

If newCustomer = True Then
    ' Insert code to execute if newCustomer = True.
Else
    ' Insert code to execute if newCustomer = False.
End If

Due significati dell'operatore =

Si noti che l'istruzione di assegnazione newCustomer = True ha lo stesso aspetto dell'espressione nell'esempio precedente, ma esegue una funzione diversa e viene usata in modo diverso. Nell'esempio precedente l'espressione newCustomer = True rappresenta un valore booleano e il segno = viene interpretato come operatore di confronto. In un'istruzione autonoma, il segno = viene interpretato come operatore di assegnazione e assegna il valore a destra alla variabile a sinistra. Ciò è illustrato nell'esempio seguente.

If newCustomer = True Then
    newCustomer = False
End If

Per altre informazioni, vedere Confronto di valori e Istruzioni.

Operatori di confronto

Gli operatori di confronto come =, <, >, <>, <= e >= producono espressioni booleane confrontando l'espressione sul lato sinistro dell'operatore con l'espressione sul lato destro dell'operatore e restituendo il risultato come True o False. Ciò è illustrato nell'esempio seguente.

42 < 81

Poiché 42 è minore di 81, l'espressione booleana nell'esempio precedente restituisce True. Per altre informazioni su questo tipo di espressione, vedere Confronto di valori.

Operatori di confronto combinati con operatori logici

Le espressioni di confronto possono essere combinate usando operatori logici per produrre espressioni booleane più complesse. Nell'esempio seguente viene illustrato l'uso di operatori di confronto in combinazione con un operatore logico.

x > y And x < 1000

Nell'esempio precedente il valore dell'espressione complessiva dipende dai valori delle espressioni su ogni lato dell'operatore And. Se entrambe le espressioni sono True, l'espressione complessiva restituisce True. Se una delle due espressioni è False, l'intera espressione restituisce False.

Operatori di cortocircuito

Gli operatori logici AndAlso e OrElse presentano un comportamento noto come corto circuito. Un operatore di corto circuito valuta prima l'operando sinistro. Se l'operando sinistro determina il valore dell'intera espressione, l'esecuzione del programma procede senza valutare l'espressione destra. Ciò è illustrato nell'esempio seguente.

If 45 < 12 AndAlso testFunction(3) = 81 Then
    ' Add code to continue execution.
End If

Nell'esempio precedente, l'operatore valuta l'espressione sinistra, 45 < 12. Poiché l'espressione sinistra restituisce False, l'intera espressione logica deve restituire False. L'esecuzione del programma ignora quindi l'esecuzione del codice all'interno del blocco If senza valutare l'espressione destra, testFunction(3). In questo esempio non viene chiamato testFunction() perché l'espressione sinistra falsifica l'intera espressione.

Analogamente, se l'espressione sinistra in un'espressione logica che usa OrElse restituisce True, l'esecuzione procede alla riga di codice successiva senza valutare l'espressione destra, perché l'espressione sinistra ha già convalidato l'intera espressione.

Confronto con operatori non di corto circuito

Al contrario, quando vengono usati gli operatori logici And e Or vengono valutati entrambi i lati dell'operatore logico. Ciò è illustrato nell'esempio seguente.

If 45 < 12 And testFunction(3) = 81 Then
    ' Add code to continue execution.
End If

L'esempio precedente chiama testFunction() anche se l'espressione sinistra restituisce False.

Espressioni tra parentesi

È possibile usare le parentesi per controllare l'ordine di valutazione delle espressioni booleane. Le espressioni racchiuse tra parentesi vengono valutate per prime. In caso di più livelli di annidamento, la precedenza viene data alle espressioni più annidate. All'interno delle parentesi, la valutazione procede in base alle regole di precedenza degli operatori. Per altre informazioni, vedere Precedenza tra gli operatori in Visual Basic.

Vedi anche