AndAlso, opérateur

Mise à jour : novembre 2007

Effectue une conjonction logique "court-circuitante" sur deux expressions.

result = expression1 AndAlso expression2

Éléments

  • result
    Requis. Toute expression Boolean. Le résultat est le résultat Boolean de la comparaison des deux expressions.

  • expression1
    Requis. Toute expression Boolean.

  • expression2
    Requis. Toute expression Boolean.

Notes

Une opération logique est dite court-circuitante si le code compilé peut ignorer 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'y a pas besoin d'évaluer l'autre expression, car elle ne peut pas changer le résultat final. Un court circuit peut améliorer les performances si l'expression ignorée est complexe ou si elle implique des appels de procédure.

Si les deux expressions ont la valeur True, result est True. Le tableau suivant illustre la manière dont result est déterminé.

Si expression1 a la valeur

Et expression2 a la valeur

La valeur de result est

True

True

True

True

False

False

False

(non évaluée)

False

L'une des utilisations de l'opérateur AndAlso consiste à tester l'existence d'une instance d'objet avant d'essayer d'accéder à l'un de ses membres. La ligne de code suivante illustre ce comportement.

If newObject AndAlso newObject.initFinished Then

L'accès à la propriété initFinished dans la ligne de code précédente pourrait lever une exception NullReferenceException si la variable newObject n'avait pas d'instance d'objet qui lui était assignée. Toutefois, l'opérateur AndAlso implique que le compilateur ignore l'accès à initFinished si newObject a la valeur Nothing, parce que Nothing correspond à False.

Types de données

L'opérateur AndAlso est défini uniquement pour Boolean, type de données (Visual Basic). Visual Basic convertit chaque opérande si nécessaire en Boolean et exécute l'opération entière en Boolean. Si vous assignez le résultat à un type numérique, Visual Basic le convertit de Boolean en ce type. Cette conversion pourrait avoir comme conséquence un comportement inattendu. Par exemple, 5 AndAlso 12 donne –1 lorsqu'il est converti en Integer.

Surcharge

Les opérateurs And (Visual Basic) et 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 de cette 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 une structure qui surcharge And et IsFalse, assurez-vous que vous comprenez son comportement redéfini. Pour plus d'informations, consultez Procédures d'opérateur.

Exemple

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 l'expression conjointe entière est true. 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 respectivement les résultats suivants : True, False et False. Dans le calcul de secondCheck, la seconde expression n'est pas évaluée parce que la première a déjà la valeur False. Toutefois, la seconde expression est évaluée dans le calcul de thirdCheck.

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 de tableau a été dépassée, l'instruction While ne teste pas l'élément de tableau pour 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

Voir aussi

Concepts

Opérateurs de bits et opérateurs logiques en Visual Basic

Référence

Opérateurs logiques/de bits

Priorité des opérateurs en Visual Basic

Opérateurs répertoriés par fonctionnalité

And, opérateur (Visual Basic)

IsFalse, opérateur