Duplicar posibles:
Is there a conditional ternary operator in VB.NET?operador Coalesce y el operador condicional en VB.NET
Hola chicos, podemos utilizar Coalesce operador (??) y el operador ternario condicional (:) en VB.NET como en C#?
Duplicar posibles:
Is there a conditional ternary operator in VB.NET?operador Coalesce y el operador condicional en VB.NET
Hola chicos, podemos utilizar Coalesce operador (??) y el operador ternario condicional (:) en VB.NET como en C#?
creo que se puede conseguir cerca con el uso de una línea sentencia if:
//C#
int x = a ? b : c;
'VB.Net
Dim x as Integer = If(a, b, c)
* Nota: el uso de la declaración if de esa manera solo se aplica en VB.NET 2008 en adelante. –
Para usar la función If() como operador de fusión, debe invocarse con solo dos parámetros, y debe usarse para tipos de referencia: 'Dim objC = If (objA, objB)' Esto establecería objC en objA a menos que objA sea Nothing, en cuyo caso objC se pondría en objB, si es Nothing o no. –
Si debe ser SiInm
Dim x as Integer=IIf(a,b,c)
No. IIf evalúa todos los parámetros ya que es una llamada normal. Ver http://dotnetslackers.com/VB_NET/re-55021_IIF_becomes_If_and_a_true_ternary_operator.aspx – LosManos
apenas para la referencia, se unen operador de cadena
Private Function Coalesce(ByVal ParamArray Parameters As String()) As String
For Each Parameter As String In Parameters
If Not Parameter Is Nothing Then
Return Parameter
End If
Next
Return Nothing
End Function
Sub Main()
Dim x, z As Object
Dim y As Nullable(Of Integer)
z = "1243"
Dim c As Object = Coalesce(x, y, z)
End Sub
Private Function Coalesce(ByVal ParamArray x As Object())
Return x.First(Function(y) Not IsNothing(y))
End Function
Utilizando LINQ, esta es la implementación más efectiva de 'Coalesce()'. – miroxlav
El problema con esto (y el de ivan a continuación) es que se evaluarán todos los parámetros. Entonces, si escribo 'Dim thingie = Coalesce (Session (" thingie "), new Thingie)' se creará un nuevo objeto Thingie cada vez (aunque se descartará si existe Thingie en la sesión) –
Esta no es una pregunta duplicada. Esta pregunta involucra al operador nulo-coalescente. –
Para convertir? al uso de VBnet If (,) con dos parámetros como se menciona [aquí] (http://stackoverflow.com/a/6792791/521554) – LosManos