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

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

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

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

3 ответов


зависит от версии. The If оператор in 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 означает.


If () - ближайший эквивалент, но будьте осторожны неявных преобразований, если вы установили "Option Strict off"

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

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

даст "foo" значение 0!

Я думаю, что '?"эквивалент оператора в C# вместо этого приведет к сбою компиляции