¿Hay un operador ternario condicional en VB.NET?


En Perl (y otros lenguajes) un operador ternario condicional se puede expresar así:

my $foo = $bar == $buz ? $cat : $dog;

¿Hay un operador similar en VB.NET?

Author: Stephen Kennedy, 2009-02-23

3 answers

Depende de la versión. El operador If en VB.NET 2008 es un operador ternario (así como un operador de coalescencia nula). Esto se acaba de introducir, antes de 2008 no estaba disponible. Aquí hay más información: Visual Basic If announcement

Ejemplo:

Dim foo as String = If(bar = buz, cat, dog)
 506
Author: Beep beep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-26 10:52:15

Iif siempre ha estado disponible en VB, incluso en VB6.

Dim foo as String = iif(bar = buz, cat, dog)

No es un verdadero operador, como tal, sino una función en Microsoft.Espacio de nombres VisualBasic.

 71
Author: Kris Erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-23 04:25:19

If () es el equivalente más cercano, pero tenga cuidado de las conversiones implícitas que ocurren si ha establecido "Opción Estricta desactivada"

Por ejemplo, si no tienes cuidado, puedes tener la tentación de probar algo como:

Dim foo As Integer? = If( someTrueExpression, Nothing, 2)

Le dará a " foo " un valor de 0!

Creo que el '?"el operador equivalente en C# fallaría en la compilación

 19
Author: unnknown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-16 19:55:31