In Visual Basic, is there a performance difference when using the IIf
function instead of the If
statement?
Both the IF and IIF first check if the test is true; but the IIF then tests if the value is False. IF doesn't test for the False component – it treats everything not True in the same way. IIF handles those items that aren't True or False (or Unknown) differently to IF.
IIf always evaluates both truepart and falsepart, even though it returns only one of them. Because of this, you should watch for undesirable side effects. For example, if evaluating falsepart results in a division by zero error, an error occurs even if expr is True.
VB has the following If
statement which the question refers to, I think:
' Usage 1 Dim result = If(a > 5, "World", "Hello") ' Usage 2 Dim foo = If(result, "Alternative")
The first is basically C#'s ternary conditional operator and the second is its coalesce operator (return result
unless it’s Nothing
, in which case return "Alternative"
). If
has thus replaced IIf
and the latter is obsolete.
Like in C#, VB's conditional If
operator short-circuits, so you can now safely write the following, which is not possible using the IIf
function:
Dim len = If(text Is Nothing, 0, text.Length)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With