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)