Is there a conditional ternary operator in VB.NET?

前端 未结 3 526
北海茫月
北海茫月 2020-11-22 11:31

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

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

Is there a s

相关标签:
3条回答
  • 2020-11-22 11:53

    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.

    0 讨论(0)
  • 2020-11-22 11:57

    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)
    

    [EDIT]

    Prior to 2008 it was IIf, which worked almost identically to the If operator described Above.

    Example:

    Dim foo as String = IIf(bar = buz, cat, dog)
    
    0 讨论(0)
  • 2020-11-22 12:06

    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

    0 讨论(0)
提交回复
热议问题