如果操作员采取三个参数

时间:2014-05-28 15:21:42

标签: vb.net syntax

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

Dim dt As String = If(OtherObject.Length > 1, OtherObject(1), "")

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

3 个答案:

答案 0 :(得分:3)

您看到了If Operator

  

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

尤其是使用三个参数调用的If运算符:

  

当使用三个参数调用If时,第一个参数必须求值为可以强制转换为布尔值的值。该布尔值将确定评估和返回其他两个参数中的哪一个。仅当使用三个参数调用If运算符时,以下列表才适用。


  

这就是令我不安的问题,这不是一个IIF声明,但似乎是一个(?)。

它取代了现在过时的IIf method。优于IIf的优点是If支持短路评估,而不是方法。 IIf将始终评估两个参数。

答案 1 :(得分:0)

当以这种方式使用时,IF是短路三元运算符。使用IIF评估双方。

http://www.panopticoncentral.net/2007/05/08/iif-becomes-if-and-a-true-ternary-operator/

基本上有一个If..Then ... Else 语句,大​​多数人在VB.NET中调用If语句,并且有一个If 运算符,你偶然发现了。

答案 2 :(得分:0)

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

如果otherobject的长度大于1,那么dt将是其他对象中具有索引1 {otherobject(1)}的项目。

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