Ответ 1
Нет, VB6 And
и Or
не имеют короткого замыкания (именно поэтому версии с коротким замыканием называются AndAlso
и OrElse
в VB.net - обратная совместимость).
Существуют ли условные тесты короткого замыкания VB6? То есть, могу ли я быть уверен, что выражение вроде...
If index <= array_size And array(index) > something Then
никогда не будет ломать массив, каково бы ни было значение индекса?
Нет, VB6 And
и Or
не имеют короткого замыкания (именно поэтому версии с коротким замыканием называются AndAlso
и OrElse
в VB.net - обратная совместимость).
В дополнение к блоку If/Then/Else/End If
, VB6 также поддерживает однострочную конструкцию If/Then/Else
. Вы можете вложить их для достижения простого короткого замыкания. Однако, поскольку это однострочный оператор, вы должны выполнить требуемое действие в той же строке. Например:
' From (no short-circuit)
If index <= array_size And array(index) > something Then
' To (short-circuit)
If index <= array_size Then If array(index) > something Then ...
Select Case - метод короткого замыкания, если вы можете использовать его для своей цели.