使用IIf
而不是If
是否有性能优势?
除了简单的代码之外......有什么区别:
If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then
mbFloodSectionChanged = True
Else
mbFloodSectionChanged = False
End If
和
mbFloodSectionChanged = IIf(msInitialFloodSection <> Trim$(cboFloodSection.Text), True, False)
答案 0 :(得分:13)
IIf
不是运算符或语言结构,它是一个函数,就像Left
之类的任何其他函数一样。因此,它将始终评估其所有参数,而使用If
时,您只会评估正确的分支。
示例:
denominator = 0
value = IIf(denominator = 0, 0, value / denominator)
尽管分母为零,但仍存在单独的分支,这将引发Divizion by zero
错误。
关于性能,它会做什么将你的值打包到Variants中,这需要额外的滴答,而不是那么多,但是如果我们处于性能上,那么If
会更快,因为它不会通过Variants强制执行,因为它只计算其中一个值,而不是两个。