条件函数返回两个值之一。
语法
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
方言差异
与QB差别
参考