IIf
 
条件函数返回两个值之一。

语法

IIf ( condition , expr_if_true , expr_if_false )

参数

condition
测试条件
非零值的计算结果为true,而零值则为false。
expr_if_true
如果condition 为真,则评估并返回的表达式。
它必须返回:
      • 一个数值,可以是整数,浮点数或指针,
      • 或字符串值,
      • 或UDT值。
expr_if_false
如果condition 为false,则计算并返回的表达式。
它必须与expr_if_true (数字,字符串或UDT)的类型相同。

说明

IIf根据条件表达式的结果返回不同的数字或字符串或UDT值。它的典型用途是在一个表达的中间;它避免分裂它在中间有条件。

IIf仅评估需要返回的表达式。这样可以节省时间,也可以防止根据condition 评估可能无效的表达式。

警告:只能从fbc版本0.90支持接受混合数字类型,字符串和UDT的功能。

例子

Dim As Integer a, b, x, y, z
a = (x + y + IIf(b > 0, 4, 7)) \ z

相当于:
Dim As Integer a, b, x, y, z, temp
If b > 0 Then temp = 4 Else temp = 7
a = (x + y + temp) \ z

Dim As Integer I
I = -10
Print I, IIf(I>0, "正", IIf(I=0, "空值", "负"))
I = 0
Print I, IIf(I>0, "正", IIf(I=0, "空值", "负"))
I = 10
Print I, IIf(I>0, "正", IIf(I=0, "空值", "负"))
Sleep

Type UDT1
  Dim As Integer I1
End Type

Type UDT2 Extends UDT1
  Dim As Integer I2
End Type

Dim As UDT1 u1, u10 = (1)
Dim As UDT2 u2, u20 = (2, 3)

u1 = IIf(0, u10, u20)
Print u1.I1
u1 = IIf(1, u10, u20)
Print u1.I1

u2 = IIf(0 , u10, u20)
Print u2.I1; u2.I2
'u2 = Iif(1, u10, u20) ''转让/转换无效
Sleep


方言差异

  • -lang qb 方言中不可用,除非使用别名__Iif?? 引用。

与QB差别

  • 新的FreeBASIC

参考