Operatore AndAlso (Visual Basic)
Esegue una congiunzione logica di corto circuito tra due espressioni.
result = expression1 AndAlso expression2
Parti
Termine |
Definizione |
result |
Obbligatorio.Qualsiasi espressione Boolean.Il risultato è il valore Boolean ottenuto dal confronto tra le due espressioni. |
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 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 |
True |
True |
True |
False |
False |
False |
(non valutato) |
False |
Tipi di dati
L'operatore AndAlso è 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 AndAlso 12 è –1 se viene eseguita la conversione in Integer.
Overload
L'Operatore And (Visual Basic) e l'Operatore IsFalse (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 And e IsFalse ha effetto sul comportamento dell'operatore AndAlso.Se il codice utilizza AndAlso su una classe o una struttura che esegue l'overload di And e IsFalse, è 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 AndAlso viene utilizzato per eseguire una congiunzione logica tra due espressioni.Il risultato è un valore Boolean che indica se l'intera espressione di congiunzione è True.Se la prima espressione è False, 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 AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b
I risultati ottenuti dall'esempio precedente sono rispettivamente True, False e False.Nel calcolo di secondCheck la seconda espressione non viene valutata perché la prima è già False.La seconda espressione, tuttavia, viene valutata nel calcolo di thirdCheck.
Nell'esempio riportato di seguito viene illustrata una routine Function che esegue la ricerca di un determinato valore tra gli elementi di una matrice.Se la matrice è vuota o se ne è stata superata la lunghezza, l'istruzione While non testa l'elemento della matrice rispetto al valore di ricerca.
Public Function findValue(ByVal arr() As Double,
ByVal searchValue As Double) As Double
Dim i As Integer = 0
While i <= UBound(arr) AndAlso arr(i) <> searchValue
' If i is greater than UBound(arr), searchValue is not checked.
i += 1
End While
If i > UBound(arr) Then i = -1
Return i
End Function
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 IsFalse (Visual Basic)