如果,IIf()和If()

Bry*_*oth 10 .net vb.net iif-function if-statement

我最近问了一个关于IIf与If的问题,并发现VB中有另一个叫做If的函数,它与IIf基本上做同样的事情但是是短路的.

这个If功能是否比IIf功能更好?If语句是否胜过IfIIf函数?

Kon*_*lph 14

该死的,我真的以为你一直在谈论操作员.;-)无论如何......

这个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
Run Code Online (Sandbox Code Playgroud)