В Perl (и других языках) условный тернарный оператор может быть выражен следующим образом:
my $foo = $bar == $buz ? $cat : $dog;
Есть ли аналогичный оператор в VB.NET?
В 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)
[РЕДАКТИРОВАТЬ]
До 2008 года это был "IIf", который работал почти идентично оператору If, описанному выше.
Пример:
Dim foo as String = IIf(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 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)