Comment VB évalue-t'il un AND logique ?
L'opérateur logique AND effectue un ET logique entre 2 expressions booléennes.
On peut l'écrire comme ceci :
Si Condition_A AND Condition_B Alors
Ce qui signifie: Si Condition_A est vraie ET (AUSSI) Condition_B est vraie, alors ...
Un piège classique en Visual Basic est que celui ci procède toujours à une évaluation complète
de l'expression, en évaluant les 2 conditions. Ceci peut paraître surprenant et même choquant,
car si condition_A est fausse, ce n'est pas la peine d'évaluer la condition_B, car l'expression
sera de toute façon fausse.
Néanmoins, Visual Basic procède ainsi, ce qui peut conduire à des situations non prévues, telle que dans l'exemple suivant:
If ((Not A is Nothing) And (A.Toto)) Then
Si on exécute ce code et que A vaut Nothing, VB va tout de même essayer d'évaluer A.Toto ce qui va bien sur conduire à une erreur d'exécution.
Pour éviter une erreur dans ce type de situation, on préférera écrire la logique dans 2 IF imbriqués, comme ceci :
If Not A Is Nothing Then If A.Toto Then ' continuer... End If End If
|