VB6 IIf的优势

ase*_*win 3 vb6 if-statement iif

使用IIf结束有性能优势If吗?

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

If msInitialFloodSection <> Trim$(cboFloodSection.Text) Then
    mbFloodSectionChanged = True
Else
    mbFloodSectionChanged = False
End If
Run Code Online (Sandbox Code Playgroud)

mbFloodSectionChanged = IIf(msInitialFloodSection <> Trim$(cboFloodSection.Text), True, False)
Run Code Online (Sandbox Code Playgroud)

GSe*_*erg 13

IIf它不是一个操作符或一个语言结构,它是一个函数,就像任何其他函数一样Left.因此,它将始终评估其所有参数,而If您只会评估正确的分支.

例:

denominator = 0
value = IIf(denominator = 0, 0, value / denominator)
Run Code Online (Sandbox Code Playgroud)

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

关于性能,它将做什么将你的价值包装到Variants中,这将需要额外的滴答,而不是那么多,但是如果我们在性能上,那么If会更快,因为它不会通过变体强迫事物,因为它会只计算其中一个值,而不是两个.

  • @aserwin排序是; 我不会从紧凑的循环中调用它.但是对于像你在问题中所展示的一般性的一次性任务,我倾向于使用`IIf`因为它看起来更好,并且性能损失几乎不存在. (4认同)