Существует ли условный тернарный оператор в 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# вместо этого приведет к сбою компиляции