在 Perl(和其他语言)中,条件三元运算符可以这样表示:
my $foo = $bar == $buz ? $cat : $dog;
VB.NET中是否有类似的运算符?
在 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(<expression>, <expressionIfNothing>)
如果<expression>
计算结果为非 Nothing 的引用或 Nullable 值,则该函数返回该值。否则,它计算并返回<expressionIfNothing>
(智能感知)
这对于检查特定值是否存在以及如果不替换它很有用。
例子:
If(cat, dog)
在这里,如果 cat 不为 null,它将返回 cat。如果为 null,则返回 dog。大多数情况下,您将在这种情况下使用三元运算符。但是,如果您不想返回正在测试的值,则必须改用它:
If(condition, cat(true), dog(false))