48 votes

Dois-je toujours utiliser les opérateurs AndAlso et OrElse ?

Y a-t-il jamais une circonstance dans laquelle je ne voudrais pas utiliser la AndAlso plutôt que l'opérateur And opérateur ? ou dans lequel je ne voudrais pas utiliser l'opérateur OrElse plutôt que l'opérateur Or opérateur ?

1 votes

Je suppose que si vous voulez faire une opération par bit, vous utiliserez And y Or

36voto

Vaibhav Points 7334

Desde MSDN :

Les avantages du court-circuitage

Le court-circuitage peut améliorer les performances en n'évaluant pas une expression qui ne peut pas modifier le résultat de l'opération logique. Cependant, si cette expression effectue des actions supplémentaires, le court-circuitage ignore ces actions. Par exemple, si l'expression comprend un appel à une procédure Function, cette procédure n'est pas appelée si l'expression est court-circuitée, et tout code supplémentaire contenu dans la Function n'est pas exécuté. Si la logique de votre programme dépend de ce code supplémentaire, vous devriez probablement éviter de court-circuiter les opérateurs.

37 votes

On pourrait arguer que le fait de s'appuyer sur votre code logique pour exécuter une fonction est obscur et que votre logique devrait être conçue pour ne pas s'appuyer sur cela pour des raisons de clarté et de maintenabilité.

6 votes

Je suis d'accord. La vraie leçon ici est de ne pas écrire de code qui n'indique pas clairement ses effets secondaires !

19voto

Joel Coehoorn Points 190579

Y a-t-il une circonstance dans laquelle je ne voudrais pas utiliser l'opérateur AndAlso plutôt que l'opérateur And ?

Bien sûr : si vous voulez vous assurer que les deux les côtés de l'expression sont évalués. Cela peut être le cas si, par exemple, les deux côtés sont des appels de méthode qui renvoient des booléens à la suite d'une autre opération qui a un effet secondaire.

Mais en général, utilisez AndAlso / OrElse chaque fois que vous utilisez && / || en C/C++/C#, ce qui est bien sûr la grande majorité du temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X