Черт, я действительно думал, что вы все время говорили об операторе. ;-) В любом случае…
Работает ли эта функция лучше, чем функция 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