<p>I recently asked a question about <a href="https://stackoverflow.com/questions/28377/iif-vs-if">IIf vs. If</a> and found out that there is another function in VB called <strong>If</strong> which basically does the same thing as <strong>IIf</strong> but is a short-circuit.</p>

<p>Does this <strong>If</strong> function perform better than the <strong>IIf</strong> function?  Does the <strong>If</strong> statement trump the <strong>If</strong> and <strong>IIf</strong> functions?</p>

Damn, I really thought you were talking about the operator all along. ;-) Anyway …
Does this If function perform better than the IIf function?
Definitely. Remember, it's built into the language. Only one of the two conditional arguments has to be evaluated, potentially saving a costly operation.
Does the If statement trump the If and IIf functions?
I think you can't compare the two because they do different things. If your code semantically performs an assignment you should emphasize this, instead of the decision-making. Use the
```
If
```
operator here instead of the statement. This is especially true if you can use it in the initialization of a variable because otherwise the variable will be default initialized, resulting in slower code:
```
```
Dim result = If(a > 0, Math.Sqrt(a), -1.0)

' versus

Dim result As Double ' Redundant default initialization!
If a > 0 Then
    result = Math.Sqrt(a)
Else
    result = -1
End If
```
```