Можно создать дубликат:
Is there a conditional ternary operator in VB.NET?Coalesce оператор и Условный оператор в VB.NET
Привет, ребята, Можем ли мы использовать Coalesce оператор (??) и условный оператор тройная (:) в VB.NET, как в C#?
Можно создать дубликат:
Is there a conditional ternary operator in VB.NET?Coalesce оператор и Условный оператор в VB.NET
Привет, ребята, Можем ли мы использовать Coalesce оператор (??) и условный оператор тройная (:) в VB.NET, как в C#?
Я думаю, что вы можете приблизиться с помощью инлайн, если заявление:
//C#
int x = a ? b : c;
'VB.Net
Dim x as Integer = If(a, b, c)
* Примечание: использование оператора if таким образом применяется только в VB.NET 2008 и далее. –
Чтобы использовать функцию If() как оператор коалесценции, ее нужно вызывать только с двумя параметрами, и ее необходимо использовать для ссылочных типов: 'Dim objC = If (objA, objB)' Это установит objC в objA если objA ничто, и в этом случае objC будет установлен в objB, будь то Nothing или нет. –
Если должен быть IIf
Dim x as Integer=IIf(a,b,c)
Nope. IIf оценивает все параметры, поскольку это обычный вызов. См. Http://dotnetslackers.com/VB_NET/re-55021_IIF_becomes_If_and_a_true_ternary_operator.aspx – LosManos
только для справки, Coalesce оператора для струнного
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
Используя LINQ, это самая эффективная реализация 'Coalesce()' вокруг. – miroxlav
Проблема с этим (и ivan ниже) заключается в том, что все параметры будут оцениваться. Итак, если я напишу «Dim thingie = Coalesce (Session (« thingie »), новая Thingie), новый объект Thingie будет создан каждый раз (хотя он будет выброшен, если Thingie существует в сеансе) –
Это не дублирующий вопрос. Этот вопрос включает оператор нуль-коалесценции. –
Для конвертации ?? к использованию VBnet. Если (,) с двумя параметрами, как указано [здесь] (http://stackoverflow.com/a/6792791/521554) – LosManos