在 Perl(和其他语言)中,条件三元运算符可以这样表示:
my $foo = $bar == $buz ? $cat : $dog;
VB.NET中有类似的运算符吗?
取决于版本。 VB.NET 2008 中的
If
运算符是一个三元运算符(也是一个空合并运算符)。这是刚刚推出的,2008 年之前是不可用的。以下是更多信息:Visual Basic If 公告
示例:
Dim foo as String = If(bar = buz, cat, dog)
[编辑]
2008 年之前,它是
IIf
,其工作方式与上面描述的 If
运算符几乎相同。
示例:
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
,请注意会发生转换。
例如,如果您不小心,您可能会尝试以下操作:
Dim foo As Integer? = If(someTrueExpression, Nothing, 2)
将给
foo
一个值0
!
我认为 C# 中的
?
运算符等效项会编译失败。
仅供记录,这是 If 和 IIf 之间的区别:
IIf(条件,真部分,假部分):
If(条件,真部分,假部分):
If(<expression>, <expressionIfNothing>)
如果
<expression>
计算结果为非 Nothing 的引用或 Nullable 值,则该函数返回该值。否则,它会计算并返回 <expressionIfNothing>
(智能感知)
这对于检查特定值是否存在以及如果不存在则替换它很有用。
示例:
If(cat, dog)
这里,如果cat不为null,就会返回cat。如果为空,则返回dog。大多数时候,您将在这种情况下使用三元运算符。但是,如果您不想返回正在测试的值,则必须使用它:
If(condition, cat(true), dog(false))