Vb.net 如果运算符取三个参数

Vb.net 如果运算符取三个参数,vb.net,syntax,Vb.net,Syntax,所以,我正在做一个项目,遇到了一些以前从未见过的奇怪语法。同样,这是在VB.Net中,代码可以运行。这不是一个调试问题。那么,在这个VB.Net代码片段中发生了什么(代码下面问题的澄清): 这是困扰我的问题,这不是一个IIF语句,但它似乎是一个(?)。您看到了: 使用短路求值有条件地返回两个值之一。可以使用三个参数或两个参数调用If运算符 特别是使用三个参数调用If运算符: 当使用三个参数调用If时,第一个参数的值必须可以转换为布尔值。该布尔值将决定计算并返回另外两个参数中的哪一个。以下列表仅在

所以,我正在做一个项目,遇到了一些以前从未见过的奇怪语法。同样,这是在VB.Net中,代码可以运行。这不是一个调试问题。那么,在这个VB.Net代码片段中发生了什么(代码下面问题的澄清):

这是困扰我的问题,这不是一个
IIF
语句,但它似乎是一个(?)。

您看到了:

使用短路求值有条件地返回两个值之一。可以使用三个参数或两个参数调用If运算符

特别是使用三个参数调用If运算符:

当使用三个参数调用If时,第一个参数的值必须可以转换为布尔值。该布尔值将决定计算并返回另外两个参数中的哪一个。以下列表仅在使用三个参数调用If运算符时适用


这是让我烦恼的,这不是一个IIF语句,但它似乎是作为一个(?)


它取代了现在已经过时的。与
IIf
相比,它的优势在于
If
支持短路评估,它由一个操作符代替一个方法
IIf
将始终计算两个参数。

如果是短路三值运算符,则以这种方式使用。使用IIF评估双方


基本上有一个If..Then..Else语句,大多数人在VB.NET中调用If语句,还有一个If操作符,你偶然发现了它

此IF运算符声明字符串“dt”,并在同一行代码中给它一个值。If语句的第一个参数是逻辑问题,第二个和第三个参数是如果分别为true和false,该语句将返回什么

如果otherobject的长度大于1,则dt将是索引为1{otherobject(1)}的otherobject中的项


如果otherobject的长度不大于1,则该语句为false,dt将为“”或空白。

我已编辑了您的标题。请看“”,其中的共识是“不,他们不应该”。谢谢。实际上,我一直在遵循这条线索(但在你提醒我之前,我已经忘记了这一点)。好电话。我保留了更改,但我不同意普遍的共识
Dim dt As String = If(OtherObject.Length > 1, OtherObject(1), "")