VB.NET中是否有条件的三元运算符?
在Perl(和其他语言)中,一个条件三元运算符可以表示如下:
my $foo = $bar == $buz ? $cat : $dog;
在VB.NET中是否有类似的运算符?
依靠。 VB.NET 2008中的If
运算符充当三元运算符。 这是刚刚介绍,在2008年之前,这是不可用的。 这里有一些更多的信息: Visual Basic如果公告
例:
Dim foo as String = If(bar = buz, cat, dog)
iif一直在VB中可用,即使在VB6中也是如此。
Dim foo as String = iif(bar = buz, cat, dog)
它不是真正的运算符,而是Microsoft.VisualBasic命名空间中的函数。
如果()是最接近的等价值,但要小心隐式转换,如果已经设置了“Option Strict off”
例如,如果你不小心,你可能会试图尝试这样的事情:
Dim foo As Integer? = If( someTrueExpression, Nothing, 2)
将“foo”赋值为0!
我觉得 '?' 在C#中相当于运算符会代替编译失败
If([argument1,] argument2,argument3)当使用三个参数调用If时,第一个参数必须求值为可以作为布尔值转换的值。 该布尔值将决定哪个另外两个参数被评估和返回。 以下列表仅适用于使用三个参数调用If运算符的情况。
你可以使用这个例子:
Dim MyResult As String = If(MyString = MyCondition, "trueValue", "falseValue")
我不认为这回答了原来的问题,但是当我发现这个页面时,这当然是我正在寻找的东西!
https://msdn.microsoft.com/en-us/library/z2wkh0tk(v=vs.90).aspx#Anchor_1
VB 2010和以上也支持这个expression式:
testing? expression1:expression2
例:
var now = new Date(); var greeting =“Good”+((now.getHours()> 17)?“evening。”:“day。”);
检查MSDN文档在这里: https ://msdn.microsoft.com/en-us/library/zakwfxx4( v= vs.100).aspx
使用这一行,
foo=IIf(bar=buz,cat,dog)