If, IIf() and If()

前端 未结 2 807
礼貌的吻别
礼貌的吻别 2021-02-20 05:20

I recently asked a question about IIf vs. If and found out that there is another function in VB called If which basically does the same thing as IIf

2条回答
  •  梦毁少年i
    2021-02-20 05:24

    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
    

提交回复
热议问题