Opérateurs logiques de VB.NET AndAlso et OrElse

VB.NET comporte deux opérateurs logiques qui aident à rendre votre programmation… enfin… plus logique. Les nouveaux opérateurs sont Et aussi et Ou sinon et ils ajoutent beaucoup aux anciens opérateurs And et Or.

Quoi de neuf

AndAlso et OrElse ont certaines propriétés qui améliorent votre code d'une manière que les versions VB précédentes ne pouvaient pas correspondre. Ils offrent des avantages dans deux catégories générales:

  • Vous pouvez éviter d'exécuter une partie d'une expression logique pour éviter les problèmes.
  • Vous pouvez optimiser le code en n'exécutant pas plus d'une expression composée que nécessaire.

AndAlso et OrElse sont à peu près comme And et Or sauf qu'ils "court-circuitent" une expression une fois le résultat garanti.

Exemple

Supposons que vous codiez un test d'un résultat de calcul comme celui-ci:

L'expression if génère une erreur "diviser par zéro" dans VB 6 car Value3 est zéro. (Mais consultez le petit conseil sur la division par zéro pour en savoir plus.) Il se peut que les cas qui font que Value3 soit nul sont très rares et ne se produisent que lorsque vous profitez de vacances à des milliers de kilomètres pour pouvoir être appelé revenir pour fixer le programme en mode d'urgence. (Hé! Ça arrive!)

Recodons le programme en tant que programme .NET en utilisant AndAlso et voyons ce qui se passe.

Après avoir changé And en AndAlso, le programme fonctionne! La raison en est que la dernière partie de la condition If composée (valeur 2 \ valeur3) n'est jamais réellement exécutée. Lorsque vous utilisez AndAlso, VB.NET sait que l'expression ne peut pas réussir une fois qu'il est déterminé que la première partie de la condition-a n'est pas supérieure à Value1-est fausse. VB.NET arrête donc d'évaluer l'expression juste là. Un exemple similaire pourrait être construit en utilisant OrElse.

Cette analyse suggère également comment vous pouvez ajouter une certaine efficacité à votre code en organisant correctement une expression logique composée. Si vous placez l'expression la plus susceptible d'être fausse à la position la plus à gauche lorsque vous utilisez AndAlso, vous pouvez empêcher les cycles d'exécution d'être utilisés pour évaluer l'expression la plus à droite. Dans un seul test, cela ne ferait pas assez de différence pour que cela vaille la peine d'y penser. Mais si votre test se trouve dans une boucle quelconque et est exécuté des millions de fois, cela pourrait faire une grande différence.

La connaissance de ces deux nouveaux opérateurs logiques VB .NET peut vous aider à éviter des erreurs très subtiles ou à réaliser des efficacités subtiles.