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

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

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

Есть ли подобный оператор в VB. СЕТЬ?

вопрос задан 23.02.2009
Jim Counts
7132 репутация

3 ответов


  • 506 рейтинг

    Зависит от версии. Оператор If в VB. NET 2008 является троичным оператором (а также оператором нулевого слияния). Это было только введено, до 2008 это не было доступно. Вот еще немного информации: Visual Basic Если объявление

    Пример:

    Dim foo as String = If(bar = buz, cat, dog)
    
    ответ дан Beep beep, с репутацией 12762, 23.02.2009
  • 71 рейтинг

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

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

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

    ответ дан Kris Erickson, с репутацией 24734, 23.02.2009
  • 19 рейтинг

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

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

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

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

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

    ответ дан unnknown, с репутацией 703, 16.08.2012