VB6 IIf的优势

时间:2012-10-24 13:53:15

标签: if-statement vb6 iif

使用IIf而不是If是否有性能优势?

除了简单的代码之外......有什么区别:

If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then
    mbFloodSectionChanged = True
Else
    mbFloodSectionChanged = False
End If

mbFloodSectionChanged = IIf(msInitialFloodSection <> Trim$(cboFloodSection.Text), True, False)

1 个答案:

答案 0 :(得分:13)

IIf不是运算符或语言结构,它是一个函数,就像Left之类的任何其他函数一样。因此,它将始终评估其所有参数,而使用If时,您只会评估正确的分支。

示例:

denominator = 0
value = IIf(denominator = 0, 0, value / denominator)

尽管分母为零,但仍存在单独的分支,这将引发Divizion by zero错误。

关于性能,它会做什么将你的值打包到Variants中,这需要额外的滴答,而不是那么多,但是如果我们处于性能上,那么If会更快,因为它不会通过Variants强制执行,因为它只计算其中一个值,而不是两个。