Есть ли условный тернарный оператор в VB.NET?

В Perl (и других языках) условный тернарный оператор может быть выражен следующим образом:

my $foo = $bar == $buz ? $cat : $dog;

Есть ли аналогичный оператор в VB.NET?

+405
23 февр. '09 в 3:17
источник поделиться
8 ответов

Зависит от версии. Оператор 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)
+542
23 февр. '09 в 3:46
источник

iif всегда был доступен в VB, даже в VB6.

Dim foo as String = iif(bar = buz, cat, dog)

Это не истинный оператор, как таковой, а функция в пространстве имен Microsoft.VisualBasic.

+73
23 февр. '09 в 4:25
источник
другие ответы

Связанные вопросы


Похожие вопросы

Если() является ближайшим эквивалентом, но остерегается неявных преобразований, если вы выбрали "Option Strict off"

Например, если вы не будете осторожны, у вас может возникнуть соблазн попробовать что-то вроде:

Dim foo As Integer? = If( someTrueExpression, Nothing, 2)

Дает "foo" значение 0!

Я думаю, что '?' оператор, эквивалентный в С#, вместо этого завершит компиляцию

+23
16 авг. '12 в 15:50
источник

Вы можете использовать этот пример:

Dim MyResult As String = If(MyString = MyCondition, "trueValue", "falseValue")
+2
21 сент. '17 в 14:58
источник

Если ([аргумент1,] аргумент2, аргумент3) Когда If вызывается с использованием трех аргументов, первый аргумент должен оценивать значение, которое может быть выбрано как Boolean. Это логическое значение будет определять, какой из двух других аргументов оценивается и возвращается. Следующий список применяется только тогда, когда оператор If вызывается с использованием трех аргументов.

+1
11 нояб. '14 в 18:28
источник

Я не думаю, что это отвечает на исходный вопрос, но это, безусловно, то, что я искал, когда нашел эту страницу!

https://msdn.microsoft.com/en-us/library/z2wkh0tk(v=vs.90).aspx#Anchor_1

-2
12 окт. '16 в 13:11
источник

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

-3
09 мар. '17 в 1:57
источник

Используйте эту строку,

foo=IIf(bar=buz,cat,dog)
-5
08 мая '14 в 11:42
источник

Посмотрите другие вопросы по меткам или Задайте вопрос