在Perl(和其他语言)中,条件三元运算符可以这样表示:
my $foo = $bar == $buz ? $cat : $dog;
在VB.NET中是否有类似的操作符?
取决于版本。VB中的If操作符。NET 2008是一个三元运算符(以及一个空合并运算符)。这是刚刚推出的,在2008年之前还没有。这里有更多的信息:Visual Basic If公告
If
例子:
Dim foo as String = If(bar = buz, cat, dog)
(编辑)
在2008年之前,它是IIf,它的工作原理与上面描述的If操作符几乎相同。
IIf
Dim foo as String = IIf(bar = buz, cat, dog)
iif在VB中一直是可用的,甚至在VB6中也是如此。
Dim foo as String = iif(bar = buz, cat, dog)
它本身并不是一个真正的运算符,而是Microsoft中的一个函数。VisualBasic名称空间。
If()是最接近的等价,但如果你设置了Option Strict off,则隐式的的当心转换将继续进行。
If()
Option Strict off
例如,如果你不小心,你可能会尝试这样的事情:
Dim foo As Integer? = If(someTrueExpression, Nothing, 2)
将给foo一个值0!
foo
0
我认为c#中等价的?操作符反而会导致编译失败。
?
为了记录,下面是如果和国际金融协会之间的区别:
IIf(条件,真部分,假部分):
If(条件,真部分,假部分):
If(<expression>, <expressionIfNothing>)
如果<expression>计算为一个不是Nothing的引用或Nullable值,函数将返回该值。否则,它计算并返回<expressionIfNothing>(智能感知)
<expression>
<expressionIfNothing>
这对于检查特定值是否存在以及是否替换它非常有用。
If(cat, dog)
在这里,如果cat不为null,它将返回cat。如果为空,则返回dog。在这种情况下,大多数情况下您将使用三元运算符。然而,如果你不想返回你正在测试的值,你将不得不使用这个代替:
If(condition, cat(true), dog(false))