В Perl (и других языках) условный тернарный оператор может быть выражен следующим образом:
my $foo = $bar == $buz ? $cat : $dog;
Есть ли аналогичный оператор в VB.NET?
Зависит от версии. Оператор If
в VB.NET 2008 является тройным оператором (а также оператором нулевой коалесценции). Это было только что введено, до 2008 года это было недоступно. Вот еще информация: Visual Basic Если объявление
Пример:
Dim foo as String = If(bar = buz, cat, dog)
iif всегда был доступен в VB, даже в VB6.
Dim foo as String = iif(bar = buz, cat, dog)
Это не истинный оператор, как таковой, а функция в пространстве имен Microsoft.VisualBasic.
Если() является ближайшим эквивалентом, но остерегается неявных преобразований, если вы выбрали "Option Strict off"
Например, если вы не будете осторожны, у вас может возникнуть соблазн попробовать что-то вроде:
Dim foo As Integer? = If( someTrueExpression, Nothing, 2)
Дает "foo" значение 0!
Я думаю, что '?' оператор, эквивалентный в С#, вместо этого завершит компиляцию
Dim foo As Integer? = If( someTrueExpression, New Integer?, 2)
.
Option Strict On
. Причина в том, что Nothing
в VB.NET не эквивалентно C # по default(T)
а не равно null
.
Вы можете использовать этот пример:
Dim MyResult As String = If(MyString = MyCondition, "trueValue", "falseValue")
Если ([аргумент1,] аргумент2, аргумент3) Когда If вызывается с использованием трех аргументов, первый аргумент должен оценивать значение, которое может быть выбрано как Boolean. Это логическое значение будет определять, какой из двух других аргументов оценивается и возвращается. Следующий список применяется только тогда, когда оператор If вызывается с использованием трех аргументов.
Я не думаю, что это отвечает на исходный вопрос, но это, безусловно, то, что я искал, когда нашел эту страницу!
https://msdn.microsoft.com/en-us/library/z2wkh0tk(v=vs.90).aspx#Anchor_1
VB 2010 и выше также поддерживают это выражение:
тест? expression1: expression2
Пример:
var now = new Date(); var greeting = "Good" + ((now.getHours() > 17)? "Вечер".: "день." );
проверьте msdn документацию здесь: https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.100).aspx
Используйте эту строку,
foo=IIf(bar=buz,cat,dog)