VB.NET中有三元运算符吗

Is there a conditional ternary operator in VB.NET?

在Perl(和其他语言)中,条件三元运算符可以这样表示:

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

在vb.net中有类似的运算符吗?


取决于版本。vb.net 2008中的If运算符是三元运算符(以及空合并运算符)。这是刚推出的,在2008年之前,这是不可用的。以下是更多信息:Visual Basic if公告

例子:

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


IIF一直在VB中可用,甚至在VB6中也可用。

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

它不是真正的运算符,而是Microsoft.VisualBasic命名空间中的函数。


if()是最接近的等价项,但如果设置了"Option Strict Off",则要注意隐式转换的进行。

例如,如果您不小心,您可能会尝试以下方法:

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

将给"foo"一个值0!

我想是"?"C中的等价运算符将导致编译失败