IIf
is not an operator or a language construct, it's a function, just like any other function such as Left
. It will therefore evaluate all its arguments at all times, whereas with If
you will only evaluate the correct branch.
Example:
denominator = 0
value = IIf(denominator = 0, 0, value / denominator)
This will raise Divizion by zero
error despite a separate branch exists for denominator being zero.
Regarding performance, what it will do is packing your values into Variants which will require additional ticks, not that much at all, but if we're on performance, then If
will be faster because it wouldn't coerce things through Variants and because it will only calculate one of the values, not two.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…