Есть ли условный троичный оператор в VB.NET? - PullRequest
411 голосов
/ 23 февраля 2009

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

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

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

Ответы [ 3 ]

553 голосов
/ 23 февраля 2009

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

Пример:

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

[EDIT]

До 2008 года это был "IIf", который работал почти так же, как оператор If, описанный выше.

Пример:

Dim foo as String = IIf(bar = buz, cat, dog)
74 голосов
/ 23 февраля 2009

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

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

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

23 голосов
/ 16 августа 2012

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

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

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

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

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

...