Espressioni booleane

Aggiornamento: novembre 2007

Un'espressione booleana è un'espressione che restituisce un valore del Tipo di dati booleano. Le espressioni Boolean possono prendere diverse forme. La più semplice è il confronto diretto del valore di una variabile Boolean con un valore letterale Boolean, come illustrato nell'esempio riportato di seguito.

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 sembra uguale all'espressione dell'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 un operatore di confronto. In un'istruzione autonoma, il segno = viene interpreatato come un operatore di assegnazione e assegna il valore di destra alla variabile di sinistra. Questa condizione è illustrata nell'esempio che segue.

If newCustomer = True Then
    newCustomer = False
End If

Per ulteriori informazioni, vedere Confronto di valori e Istruzioni di assegnazione.

Operatori di confronto

Gli operatori di confronto come =, <, >, <>, <= e >= producono espressioni booleane tramite il confronto dell'espressione a sinistra dell'operatore con l'espressione a destra dell'operatore e valutando il risultato come True o False. Questa condizione è illustrata nell'esempio che segue.

42 < 81

Poiché 42 è inferiore a 81, l'espressione booleana nell'esempio riportato in precedenza restituisce True. Per ulteriori informazioni su questo tipo di espressione, vedere Confronto di valori.

Operatori di confronto combinati con operatori logici

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

x > y And x < 1000

Nell'esempio illustrato in precedenza, il valore dell'espressione generale dipende dai valori delle espressioni su ogni lato dell'operatore And. Se entrambe le espressioni sono True, l'espressione totale restituisce True. Se una delle due espressioni è False, l'intera espressione restituirà False.

Operatori short circuit

Gli operatori logici AndAlso e OrElse esibiscono un comportamento noto come short-circuit. Un operatore di short-circuit restituisce prima l'operando di sinistra. Se l'operatore di sinistra determina il valore dell'intera espressione, l'esecuzione del programma procederà senza valutare l'espressione corretta. Questa condizione è illustrata nell'esempio che segue.

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

Nell'esempio riportato in precedenza, l'operatore restituisce l'espressione di sinistra, 45 < 12. Poiché l'espressione di sinistra restituisce False, l'intera espressione logica deve restituire False. L'esecuzione del programma salta quindi l'esecuzione del codice all'interno del blocco If senza valutare l'espressione di destra, testFunction(3). Questo esempio non consente di chiamare testFunction() in quando l'espressione di sinistra falsifica l'intera espressione.

In modo simile, se l'espressione di sinistra in un'espressione logica che utilizza OrElse restituisce True, l'esecuzione procederà alla riga di codice successiva senza valutare l'espressione di destra, in quanto l'espressione di sinistra ha già convalidato l'intera espressione.

Confronto con gli operatori di non short-circuit

Entrambi i lati dell'operatore logico invece sono valutati quando vengono utilizzati gli operatori logici And e Or. Questa condizione è illustrata nell'esempio che segue.

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

Nell'esempio elencato in precedenza viene chiamato testFunction() anche se l'espressione di sinistra restituisce False.

Espressioni tra parentesi

È possibile utilizzare le parentesi per controllare l'ordine di valutazione delle espressioni booleane. Le espressioni racchiuse tra parentesi vengono valutate per prime. Nel caso di più livelli di nidificazione, la precedenza è accordata alle espressioni nidificate più interne. All'interno delle parentesi, la valutazione viene eseguita in base alle regole di precedenza tra gli operatori. Per ulteriori informazioni, vedere Precedenza tra gli operatori in Visual Basic.

Vedere anche

Concetti

Operatori logici e bit per bit in Visual Basic

Confronto di valori

Istruzioni di assegnazione

Combinazione efficace di operatori

Riferimenti

Operatori di confronto (Visual Basic)

Precedenza tra gli operatori in Visual Basic

Tipo di dati Boolean (Visual Basic)