visual propiedades objetos multilinea lista ejemplos dim comment comentario clases vb6 operators language-design short-circuiting

vb6 - multilinea - objetos de visual basic y sus propiedades



¿Por qué el cortocircuito no es el comportamiento predeterminado en VB? (3)

VB tiene operadores AndAlso y OrElse , que realizan un cortocircuito en la conjunción lógica.

¿Por qué este no es el comportamiento predeterminado de las expresiones Y y OR , ya que el cortocircuito es útil en todos los casos?

Extrañamente, esto es contrario a la mayoría de los idiomas donde && y || realizar un cortocircuito.


El cortocircuito explícito asegura que el operando izquierdo se evalúa primero.

En algunos idiomas distintos de VB, los operadores lógicos pueden realizar un cortocircuito implícito pero pueden evaluar primero al operador correcto (dependiendo, por ejemplo, de la complejidad de las expresiones a la izquierda y a la derecha del operador lógico).


No creo que los cortocircuitos sean útiles en todos los casos. Lo uso solo cuando es requerido Por ejemplo, cuando se verifican dos variables diferentes y desconectadas, no sería necesario:

If x > y And y > z Then End If

Como lo ilustra el artículo de Paul Vick (ver enlace proporcionado por Ken Browning más arriba), el escenario perfecto en el cual el cortocircuito es útil es cuando un objeto se debe verificar primero para la existencia y luego se debe evaluar una de sus propiedades.

If x IsNot Nothing AndAlso x.Someproperty > 0 Then End If

Entonces, en mi opinión, ambas opciones sintácticas son muy necesarias.


Porque el equipo de VB tenía que mantener la compatibilidad con versiones anteriores de código (¡y programadores!)

Si el cortocircuito fuera el comportamiento predeterminado, el compilador interpretaría incorrectamente las operaciones a nivel de bit .

¿Por qué presentamos AndAlso y OrElse? por Panopticon Central

Nuestro primer pensamiento fue que las operaciones lógicas son mucho más comunes que las operaciones bit a bit, por lo que deberíamos hacer que And y Or sean operadores lógicos y agregar nuevos operadores bit a bit llamados BitAnd, BitOr, BitXor y BitNot (los dos últimos para completar). Sin embargo, durante una de las versiones beta se hizo obvio que esta era una idea bastante mala. Un usuario de VB que olvida que los nuevos operadores existen y usa Y cuando quiere decir BitAnd y O cuando quiere decir que BitOr obtendrá un código que compila pero produce resultados "malos".