Astuces de recherche...
Home
- Accueil & nouveautés
- Les newsgroups VB
- Téléchargements
- L'équipe
- Nous contacter
- Liens
Rubriques
- Toutes les questions
- Affichage & graphismes
- Algorithmique
- API
- Base de registre
- Bases de données
- Contrôles
- Date & heure
- Déploiement
- Divers
- Erreurs & problèmes
- Fichiers & dossiers
- Généralités
- Impression
- Internet & mails
- Math
- Multimédia
- Réseaux
- Structures de données
- Texte & strings
- VB .Net
- VB Script
- VBA
- Windows

Question 140

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

Date de publication : 19 novembre 2006
Dernière modification : 19 novembre 2006
Rubriques : Erreurs & problèmes
Mots-clés : évaluation,AndAlso,court-circuit,if