¿Hay alguna circunstancia en la que no desee utilizar el operador AndAlso
en lugar del operador And
? & hellip; o en el que no quisiera utilizar el operador OrElse
en lugar del operador Or
?¿Debo usar siempre los operadores AndAlso y OrElse?
Respuesta
De MSDN:
cortocircuitos dilemas de
El cortocircuito puede mejorar el rendimiento, al no evaluar una expresión que no puede alterar el resultado de la operación lógica. Sin embargo, si esa expresión realiza acciones adicionales, el cortocircuito omite esas acciones. Por ejemplo, si la expresión incluye una llamada a un procedimiento de función, no se llama a ese procedimiento si la expresión está en cortocircuito y no se ejecuta ningún código adicional contenido en la función. Si la lógica de su programa depende de cualquiera de esos códigos adicionales, probablemente deba evitar el cortocircuito de los operadores.
Seguro: si quiere asegurarse de que ambos se evalúan los lados de la expresión. Este podría ser el caso si, por ejemplo, ambos lados son llamadas a métodos que devuelven booleanos como resultado de alguna otra operación.
Pero, en general, debe usar AndAlso/OrElse cada vez que utilice & &/|| en C/C++/C#, que por supuesto es la gran mayoría de las veces.
- 1. AndAlso/OrElse en VBA
- 2. Excepción utilizando los métodos de expresión OrElse y AndAlso
- 3. (OrElse and Or) and (AndAlso and And) - ¿Cuándo usar?
- 4. ¿Debo usar siempre genéricos?
- 5. ¿Debo usar siempre TryGetValue para acceder a los diccionarios .net?
- 6. ¿Debo usar calificadores de referencia lvalue para operadores de asignación?
- 7. ¿Cuándo debo usar los hilos?
- 8. ¿Debo usar siempre el servicio o puedo usar los repositorios directamente?
- 9. ¿Cómo debo pasar los datos SSE a mis funciones/operadores?
- 10. operadores consecutivos y los soportes
- 11. ¿Qué hacen los operadores '& =' y '= &'?
- 12. ¿En qué casos debo usar memcpy sobre los operadores estándar en C++?
- 13. + =, +, == y = operadores
- 14. Eficiencia de PartialFunction orElse
- 15. ¿Cuándo debo usar los botones de radio?
- 16. ¿Debo usar HTML5 y CSS3?
- 17. Java - compareTo y operadores
- 18. RedirectToAction() vs. View() y los operadores ternarios?
- 19. O frente a OrElse
- 20. ¿Debo usar multiplicación o división?
- 21. Haskell: TVar: orElse
- 22. ¿Debo usar los prefijos std :: y boost :: en todas partes?
- 23. Ruby - saltos de línea y los operadores
- 24. ¿Debo usar siempre transacciones en nhibernate (incluso para lecturas y escrituras simples)?
- 25. ¿Cuándo debo usar dispose() en los gráficos?
- 26. ¿Cuándo debo usar los procedimientos almacenados?
- 27. && = y = || operadores
- 28. ¿Cuál es el uso de operadores booleanos sin cortocircuito en Erlang?
- 29. Usar operadores iguales en C#
- 30. Siempre compruebe los parámetros y genere excepciones
Se podría argumentar que depender de su código lógico para ejecutar una función es oscuro y su lógica debería estar diseñada para no confiar en eso para mayor claridad y facilidad de mantenimiento. –
Estoy de acuerdo. La verdadera lección aquí es no escribir código que no indique claramente sus efectos secundarios. –