Opérateur AndAlso (Visual Basic)
Effectue une conjonction logique de court-circuit de deux expressions.
Syntaxe
result = expression1 AndAlso expression2
Éléments
Terme | Définition |
---|---|
result |
Obligatoire. Toute expression Boolean . Le résultat est le résultat Boolean de la comparaison des deux expressions. |
expression1 |
Obligatoire. Toute expression Boolean . |
expression2 |
Obligatoire. Toute expression Boolean . |
Notes
Une opération logique est dite de court-circuit si le code compilé peut contourner l’évaluation d’une expression en fonction du résultat d’une autre expression. Si le résultat de la première expression évaluée détermine le résultat final de l’opération, il n’est pas nécessaire d’évaluer la deuxième expression, car elle ne peut pas modifier le résultat final. Le court-circuit peut améliorer les performances si l’expression contournée est complexe ou si elle implique des appels de procédure.
Si les deux expressions prennent la valeur True
, result
est True
. Le tableau suivant illustre la définition de result
.
Si expression1 est |
Et expression2 est |
La valeur de result est |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(non évaluée) | False |
Notes
Dans une comparaison booléenne, l’opérateur And
évalue toujours les deux expressions, ce qui peut inclure la réalisation d’appels de procédure. L’opérateur AndAlso effectue un court-circuit, ce qui signifie que si expression1
est False
, alors expression2
n’est pas évalué.
Types de données
L’opérateur AndAlso
est défini uniquement pour le type de données Boolean. Visual Basic convertit chaque opérande comme nécessaire à Boolean
avant d’évaluer l’expression. Si vous affectez le résultat à un type numérique, Visual Basic le convertit de Boolean
à ce type de manière à ce que False
devienne 0
et True
devienne -1
.
Pour plus d’informations, consultez Conversions de type Boolean.
Surcharge
L’opérateur And et l’opérateur IsFalse peuvent être surchargés, ce qui signifie qu’une classe ou une structure peut redéfinir leur comportement lorsqu’un opérande a le type de cette classe ou structure. La surcharge des opérateurs And
et IsFalse
affecte le comportement de l’opérateur AndAlso
. Si votre code utilise AndAlso
sur une classe ou structure qui surcharge And
et IsFalse
, veillez à comprendre leur comportement une fois qu’il est redéfini. Pour plus d'informations, consultez Operator Procedures.
Exemple 1
L’exemple suivant utilise l’opérateur AndAlso
pour effectuer une conjonction logique sur deux expressions. Le résultat est une valeur Boolean
qui indique si la totalité de l’expression jointe est vraie. Si la première expression est False
, la seconde n’est pas évaluée.
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
L’exemple précédent produit les résultats de True
, False
et False
, respectivement. Dans le calcul de secondCheck
, la deuxième expression n’est pas évaluée, car la première est déjà False
. Toutefois, la deuxième expression est évaluée dans le calcul de thirdCheck
.
Exemple 2
L’exemple suivant montre une procédure Function
qui recherche une valeur donnée parmi les éléments d’un tableau. Si le tableau est vide ou si la longueur du tableau a été dépassée, l’instruction While
ne teste pas l’élément du tableau par rapport à la valeur de recherche.
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