En Perl (y otros idiomas) un operador ternario condicional puede expresarse así:¿Hay un operador ternario condicional en VB.NET?
my $foo = $bar == $buz ? $cat : $dog;
¿Hay un operador similar en VB.NET?
En Perl (y otros idiomas) un operador ternario condicional puede expresarse así:¿Hay un operador ternario condicional en VB.NET?
my $foo = $bar == $buz ? $cat : $dog;
¿Hay un operador similar en VB.NET?
Depende. El operador If
en VB.NET 2008 actúa como un operador ternario. Esto se acaba de presentar, antes de 2008 esto no estaba disponible. Aquí hay más información: Visual Basic If announcement
Ejemplo:
Dim foo as String = If(bar = buz, cat, dog)
Antes de 2008 era IIf, que funcionaba de manera casi idéntica al operador If descrito en su enlace. – Zooba
... con la importante diferencia de que Iif(), al ser una función, siempre evaluó tanto el consecuente como el alternativo, mientras que el nuevo If solo evalúa uno de ellos. –
¿Qué significa? If (condición, parte verdadera, parte falsa). puedo rito? – kbvishnu
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 el espacio de nombres Microsoft.VisualBasic.
Iif está cerca de un operador ternario, lo que significa no podrías usarlo en todas las condiciones en que lo harías con un If Then Else (u operador ternario). Por ejemplo, Value = Iif (1 = 1, 0, 1/0) explotaría, pero Value = If (1 = 1, 0, 1/0) no ... –
VB no es compatible con la evaluación de cortocircuito (excepto para el operador AndAlso), por lo que los programadores de VB realmente no esperan que puedan evaluar con seguridad la mitad de una operación. Pero punto tomado, también iif es una función de corte que se puso para la compatibilidad con versiones anteriores de lo contrario sería un operador real. –
Bueno para categorizar todos los programadores de VB ;-) Y también hay IsNot y OrElse para acceso directo, por lo que VB sí admite la evaluación de corto circuito. – HardCode
Si() es el equivalente más cercano, pero cuidado de conversiones implícitas pasando Si ha ajustado "Option Strict off"
Por ejemplo, si no tiene cuidado puede estar tentado a intentar algo como:
Dim foo As Integer? = If(someTrueExpression, Nothing, 2)
¡Se le dará a "foo" el valor 0!
Creo que el '?' equivalente operador en C# en lugar de otro fallará la compilación
Para completar, la mejor manera de escribir esa expresión es 'Dim foo As Integer? = If (someTrueExpression, New Integer ?, 2) '. –
Tenga en cuenta que esto también ocurre con 'Option Strict On'. La razón es que 'Nothing' en VB.NET es equivalente a C#' default' (T) 'en vez de a' null'. – Heinzi
Y para cualquier persona desconcertada con '¿Entero?' Significa que puede contener nulos - ver http://stackoverflow.com/questions/3628757/make-an-integer-null –
Usar esta línea,
foo=IIf(bar=buz,cat,dog)
Este no es un operador ternario condicional. Es una función que se comporta de manera similar bajo ciertas circunstancias. –
Si ([argumento1] argumento2, argumento3) Cuando Si se llama mediante el uso de tres argumentos, el primer argumento debe evaluar a una valor que se puede convertir como Boolean. Ese valor booleano determinará cuál de los otros dos argumentos se evalúa y devuelve. La siguiente lista se aplica solo cuando se llama al operador If utilizando tres argumentos.
No creo que esto responda la pregunta original, ¡pero sin duda es lo que estaba buscando cuando encontré esta página!
https://msdn.microsoft.com/en-us/library/z2wkh0tk(v=vs.90).aspx#Anchor_1
VB 2010 y también apoyan esta expresión:
prueba? expression1: expression2
ejemplo:
var ahora = new Date(); var greeting = "Good" + ((now.getHours()> 17)? "evening.": "day.");
verificación de documentación de MSDN aquí: https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.100).aspx
Eso es C#, no VB. – dwilliss
Puede utilizar este ejemplo:
Dim MyResult As String = If(MyString = MyCondition, "trueValue", "falseValue")
Una respuesta inútil que no agrega nada a las soluciones ya establecidas, años más tarde con la esperanza de ganar reputación. –
Un operador ternario es cualquier operador que toma tres operandos, como un operador binario necesitan dos y un operador unario toma uno. El operador?: es un ejemplo específico de un operador ternay, no la definición. – Zooba
Sí, gracias, pero esa información no ayuda. –
Es por eso que es un comentario, más que una respuesta. Comenté que había un respuesta correcta que identifica IIf que parece haber desaparecido ahora. – Zooba