Tuesday, August 23, 2005

Diferencias en la lógica de VB.NET y C#

Encontré una diferencia notable en la lógica de VB.NET con la de C#. En el segundo, es posible hacer una sentencia del tipo:

if( objeto != null && objeto.Condicion )
{
     //Esto lo realiza si el objeto existe y se da la condición
}

Esto quiere decir que el compilador evalúa la primer expresión lógica, y solo si es verdadera evalúa la segunda. En VB.NET, una sentencia equivalente mandaría una excepción:

If Not IsNothing(objeto) And objeto.Condicion Then
     ‘Manda una excepción si el objeto es nulo
End If

El compilador trata de evaluar toda la sentencia al mismo tiempo por lo que si el objeto es nulo, manda la excepción al intentar evaluar la segunda expresión. Tuve que reescribir el if anidando:

If Not IsNothing(objeto) Then
     If objeto.Condicion Then
          ‘Llega en las condiciones correctas
     End If
End If

Si alguien sabe una forma mejor de hacerlo, por favor díganmelo :D

Nota adicional: ¡Qué feo es VB!

0 Comments:

Post a Comment

<< Home