Is there a conditional ternary operator in VB.NET?

2018-12-31 12:08发布

问题:

In Perl (and other languages) a conditional ternary operator can be expressed like this:

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

Is there a similar operator in VB.NET?

回答1:

Depends upon the version. The If operator in VB.NET 2008 is a ternary operator (as well as a null coalescence operator). This was just introduced, prior to 2008 this was not available. Here\'s some more info: Visual Basic If announcement

Example:

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


回答2:

iif has always been available in VB, even in VB6.

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

It is not a true operator, as such, but a function in the Microsoft.VisualBasic namespace.



回答3:

If() is the closest equivalent but beware of implicit conversions going on if you have set \"Option Strict off\"

For example, if your not careful you may be tempted to try something like:

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

Will give \"foo\" a value of 0!

I think the \'?\' operator equivalent in C# would instead fail compilation