Export (0) Print
Expand All

IIf Function

Updated: August 2008

Returns one of two objects, depending on the evaluation of an expression.

NoteNote:

Visual Basic 2008 introduces a new If operator that uses short-circuit evaluation. For more information, see If Operator.

Public Function IIf( _
   ByVal Expression As Boolean, _ 
   ByVal TruePart As Object, _ 
   ByVal FalsePart As Object _ 
) As Object

Expression

Required. Boolean. The expression you want to evaluate.

TruePart

Required. Object. Returned if Expression evaluates to True.

FalsePart

Required. Object. Returned if Expression evaluates to False.

This example uses the IIf function to evaluate the testMe parameter of the checkIt procedure and returns the word "Large" if the amount is greater than 1000; otherwise, it returns the word "Small".

Function checkIt(ByVal testMe As Integer) As String 
    Return CStr(IIf(testMe > 1000, "Large", "Small"))
End Function

Note that if Option Strict is On, you must use the CStr keyword to explicitly convert the return from Object to String.

Because the IIf function does not use short-circuit evaluation, it always evaluates all three of its arguments. The If operator evaluates its first argument and, depending on the value of the first argument, either the second or the third argument. In the following example, using the IIf function causes a run-time divide-by-zero error when the divisor is 0, but using the If operator does not because the second argument is not evaluated in that case.

number = 12

' When the divisor is not 0, both If and IIf return 4. 
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

For more information about the If operator, see If Operator.

Namespace: Microsoft.VisualBasic

Module: Interaction

Assembly: Visual Basic Runtime Library (in Microsoft.VisualBasic.dll)

Date

History

Reason

August 2008

Added an example to explain short-circuit evaluation.

Customer feedback.

Community Additions

ADD
Show:
© 2014 Microsoft