none
Operador ternario de Csharp a VB.NET RRS feed

  • Pregunta

  • Hola amigos tengo una gran confucion con estos operadores que me gustaria que me ayudaran

    quiero pasar esta expresion de C-sharp a VB.NET, me interesa saber como implementar el operador ? y : que no entiendo como pasarlo para VB.NET.

    se que es un If...else, pero no logro como pasarlo a vb.net

                Point puntoOrigen = origen.Location;
                Point puntoDestino = destino.Location;
    
                if (((color == "azul") ? puntoDestino.Y - puntoOrigen.Y : puntoOrigen.Y - puntoDestino.Y) == 50 | (origen.Tag=="queen" && Math.Abs(puntoOrigen.Y - puntoDestino.Y)==50))
                {
                    if (color == "azul") { blueKilled.Add(new object[] {"",""}); } else { redKilled.Add(null); }
                    return true;
                }

    quiero saber como se aplica a VB.NET pero no he logrado la forma de como hacerlo , gracias.. :)



    • Editado Domix7229 jueves, 28 de abril de 2016 5:32
    jueves, 28 de abril de 2016 5:28

Respuestas

  • "Domix7229" escribió:

    > quiero pasar esta expresion de C-sharp a VB.NET, me interesa saber como implementar ?

    Hola:

    En el siguiente enlace encontrarás un convertidor en línea de código de C# a VB .NET y viceversa:

    http://converter.telerik.com/

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Domix7229 jueves, 28 de abril de 2016 11:55
    jueves, 28 de abril de 2016 5:37
    Moderador

Todas las respuestas

  • "Domix7229" escribió:

    > quiero pasar esta expresion de C-sharp a VB.NET, me interesa saber como implementar ?

    Hola:

    En el siguiente enlace encontrarás un convertidor en línea de código de C# a VB .NET y viceversa:

    http://converter.telerik.com/

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Domix7229 jueves, 28 de abril de 2016 11:55
    jueves, 28 de abril de 2016 5:37
    Moderador
  • Cuando en C# tienes una expresión del tipo

    a = b ? c : d;

    se puede traducir a VB usando un IIF:

    a = IIF(b, c, d)

    Con una precaución: si c o d tuvieran efectos colaterales, hay que tener en cuenta que en VB se ejecutarían las dos (c y d), mientras que en C# solo una de ellas (la que corresponda según b). Si esto no es aceptable, entonces hay que prescindir de escribirlo todo en una única expresión y cambiarlo por dos asignaciones con if...then...else:

    If b Then a=c Else a=d

    jueves, 28 de abril de 2016 5:55
  • "Alberto Poblacion" escribió:

    > Cuando en C# tienes una expresión del tipo
    >
    > a = b ? c : d;
    >
    > se puede traducir a VB usando un IIF:
    >
    > a = IIF(b, c, d)
    >
    > Con una precaución: si c o d tuvieran efectos colaterales, hay que
    > tener en cuenta que en VB se ejecutarían las dos (c y d), mientras
    > que en C# solo una de ellas (la que corresponda según b).

    E igual sucede en Visual Basic .net, salvo que en lugar de utilizar la función IIf correspondiente al espacio de nombres Microsoft.VisualBasic.Interaction, hay que utilizar el operador If para efectuar una evaluación de cortocircuito:

       
     a = If(b, c, d)

    Es decir, si la condición b es True, se devolverá el valor c sin entrar en evaluarse el valor de d, cosa que sí se haría si se utilizase la función IIf.


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    jueves, 28 de abril de 2016 6:08
    Moderador