## Why is this an issue?

Visual Basic .NET offers a non-short-circuit conditional function, `IIf()`, which returns either its second or third parameter based on the expression in the first parameter. Using it is slower than using `If()` because each parameter is unconditionally evaluated. Further, its use can lead to runtime exceptions because `IIf` always evaluates all three of its arguments.

The newer version, `If()`, should be used instead because it short-circuits the evaluation of its parameters.

### Noncompliant code example

    Public Class Foo
        Public Sub Bar()
            Dim var As Object = IIf(Date.Now.Year = 1999, "Lets party!", "Lets party like it is 1999!") ' Noncompliant
        End Sub
    End Class

### Compliant solution

    Public Class Foo
        Public Sub Bar()
            Dim var As String = If(Date.Now.Year = 1999, "Lets party!", "Lets party like it is 1999!")
        End Sub
    End Class

## Resources

- IIf Function (MSDN)
- If Operator (MSDN)