Почему IIF оценивает обе стороны? .СЕТЬ

Я пытаюсь использовать IIF в простом режиме:

 Dim MyList As List(Of Double) = New List(Of Double)
 Dim ret As Double

 ret = IIf(MyList.Count > 0, MyList.Max(), 0)

В MyList нет элементов, но выдается исключение System.InvalidOperationException: "Последовательность не имеет элементов". Почему IIF оценивает обе стороны?

Спасибо!

1 ответ

Решение

Поскольку это старая функция VB6, используйте If оператор, который выполняет оценку короткого замыкания:

ret = If(MyList.Count > 0, MyList.Max(), 0)
Другие вопросы по тегам