我最近问了一个关于 IIf VS.如果 发现VB中还有一个函数叫做 如果 它基本上做同样的事情 伊夫 但属于短路。

做这个 如果 函数的性能优于 伊夫 功能?是否 如果 声明胜过 如果伊夫 功能?

有帮助吗?

解决方案

该死,我真的以为你一直在谈论接线员。;-) 反正 …

该 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

其他提示

之间有一个非常重要的区别 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 值和 Object 类型
ifVal 值为 0 且类型为 Integer,b/c 它隐式地将 Nothing 转换为 Integer。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top