读书人

iif 和 if then 语句的差别,该怎么处理

发布时间: 2013-01-25 15:55:29 作者: rapoo

iif 和 if then 语句的差别
看下代码,IIF语句会将 True 和 False 都计算一遍,其中一个不正确就会出错,但if then 语句就不会

比如情况1时,当strcp ="a|b"时正常,但没有了"|"就报错了
情况2,无论strcp中有没有"|"都执行正常。

如果要测试的话,只选其中一种情况,将另一种情况注释掉

这个确实是这样子的吗?如果iif会将True和False情况都计算一次,那从效率上讲会不会比IF THEN 慢一些,这样的话,我以后就不再用IIF了!



Dim iTemp As Long
Dim strCp As String
strCp = "MyTestStr"
iTemp = InStr(strCp, "|")

'情况1
'' SelComputer = IIf(iTemp > 1, Left(strCp, iTemp - 1), strCp) 'IIf 语句会先将 True 和 False 都计算一遍,会出错

’情况2
If iTemp > 1 Then
SelComputer = Left(strCp, iTemp - 1)
Else
SelComputer = strCp
End If

[解决办法]
不是一回事。

IIf 是一个函数,它要求一个返回值。因此,你必须明确制定真和假的情况下返回什么。但一次运行,它只能得到一个结果,取决于布尔值。

If Then Else End If 是条件分支语句,决定程序的流向。

就你上面所举的例子,实际上,条件为假的值在编译时就已经硬编码的。而条件为真的值,无论哪个,都只有运行到此才能确定。

读书人网 >VB

热点推荐