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)
同意。对于布尔表达式,我就是这么做的。这不是一个完美的例子!编写可读的代码是程序员的工作。编译器的工作是编译经过优化的代码。