代码之家  ›  专栏  ›  技术社区  ›  Bryan Roth

if、iif()和if()。

  •  10
  • Bryan Roth  · 技术社区  · 18 年前

    我最近问了一个关于 IIf vs. If 发现在VB中还有一个函数 如果 基本上和 IIF 但是是短路。

    这样做吗? 如果 功能比 IIF 功能?做 如果 声明胜过 如果 和 IIF 功能?

    2 回复  |  直到 18 年前
        1
  •  14
  •   Konrad Rudolph    18 年前

    该死,我真以为你一直在说接线员。-)无论如何_

    这个if函数比iif函数执行得更好吗?

    一定地。记住,它是内置于语言中的。只有两个条件参数中的一个需要评估,这可能会节省昂贵的操作。

    if语句是否优于if和iif函数?

    我认为你不能比较这两者,因为它们做的事情不同。如果您的代码语义上执行了一个赋值,那么您应该强调这一点,而不是决策。使用 If 这里是运算符,而不是语句。如果您可以在变量的初始化中使用它,则这一点尤其正确,因为否则将默认初始化该变量,从而导致代码变慢:

    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
    
        2
  •  1
  •   BateTech    12 年前

    一个非常重要的区别 IIf() 和 If() 是这样吗? Option Infer On 在某些情况下,后者将隐式地将结果强制转换为相同的数据类型,如 IIf 将返回 Object .

    例子:

        Dim val As Integer = -1
        Dim iifVal As Object, ifVal As Object
        iifVal = IIf(val >= 0, val, Nothing)
        ifVal = If(val >= 0, val, Nothing)
    

    输出:
    iifVal 值为Nothing且对象类型为
    ifVal 值为0且类型为整数,b/c它隐式地将Nothing转换为整数。

    推荐文章