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