If statement VB6 IIf优势
使用If statement VB6 IIf优势,if-statement,vb6,iif,If Statement,Vb6,Iif,使用IIf比If有性能优势吗 除了简单地减少代码之外。。。以下两者之间的区别是什么: If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then mbFloodSectionChanged = True Else mbFloodSectionChanged = False End If 如果msInitialFloodSection Trim$(cboFloodSection.Text),则 MBS已更改
IIf
比If
有性能优势吗
除了简单地减少代码之外。。。以下两者之间的区别是什么:
If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then
mbFloodSectionChanged = True
Else
mbFloodSectionChanged = False
End If
如果msInitialFloodSection Trim$(cboFloodSection.Text),则
MBS已更改=真
其他的
MBS已更改=错误
如果结束
及
mbFloodSectionChanged = IIf(msInitialFloodSection <> Trim$(cboFloodSection.Text), True, False)
mbFloodSectionChanged=IIf(msInitialFloodSection Trim$(cboFloodSection.Text),True,False)
IIf
不是运算符或语言构造,它是一个函数,就像任何其他函数一样,如Left
。因此,它将始终计算其所有参数,而使用If
时,您将只计算正确的分支
例如:
denominator = 0
value = IIf(denominator = 0, 0, value / denominator)
尽管分母为零时存在单独的分支,但这将引发除以零的错误
关于性能,它将把您的值打包到变量中,这将需要额外的刻度,一点也不需要,但如果我们关注性能,那么if
将更快,因为它不会通过变量强制执行操作,并且只会计算其中一个值,不是两个。这就是我想知道的。。。我知道VB6中没有“短路”,但我担心IIf
可能会适得其反!似乎是这样吗?@aserwin有点是的;我不会从一个严格的角度来看待它。但是对于像你在问题中展示的那样的琐碎的一次性任务,我倾向于使用IIf
,因为它看起来更好,而且性能损失几乎不存在。旁白:为了简单起见,我个人更喜欢mbFloodSectionChanged=msInitialFloodSection Trim$(cboFloodSection.Text)
同意。对于布尔表达式,我就是这么做的。这不是一个完美的例子!编写可读的代码是程序员的工作。编译器的工作是编译经过优化的代码。