Поделиться через


Оператор OrElse (Visual Basic)

Выполняет короткое замыкание инклюзивного логического дисъюнкционирования для двух выражений.

Синтаксис

result = expression1 OrElse expression2  

Детали

result
Обязательный. Произвольное выражение Boolean .

expression1
Обязательный. Произвольное выражение Boolean .

expression2
Обязательный. Произвольное выражение Boolean .

Замечания

Как говорят, логическая операция является короткой, если скомпилированный код может обойти оценку одного выражения в зависимости от результата другого выражения. Если результат первого выражения, вычисляемого, определяет конечный результат операции, нет необходимости оценивать второе выражение, так как оно не может изменить окончательный результат. Короткое замыкание может повысить производительность, если обходное выражение является сложным или если оно включает вызовы процедур.

Если одно или оба выражения оцениваются True, result имеет значение True. В следующей таблице показано, как result определяется.

Если expression1 имеет значение И expression2 есть Значение result равно
True (не вычисляется) True
False True True
False False False

Типы данных

Оператор OrElse определяется только для логического типа данных. Visual Basic преобразует каждый операнд в соответствии с необходимостью перед Boolean оценкой выражения. При назначении результата числовым типом Visual Basic преобразует его из Boolean этого типа, который False становится 0 и True становится -1. Дополнительные сведения см. в разделе "Логические преобразования типов".

Перегрузка

Оператор Or и оператор IsTrue могут быть перегружены, что означает, что класс или структура могут переопределить их поведение, если операнду имеет тип этого класса или структуры. Перегрузка Or операторов IsTrue влияет на поведение OrElse оператора. Если код используется OrElse в классе или структуре, которая перегружает Or , IsTrueи убедитесь, что вы понимаете их переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.

Пример 1

В следующем примере оператор используется OrElse для выполнения логического дисъюнкции для двух выражений. Результатом является Boolean значение, представляющее, является ли одно из двух выражений истинным. Если первое выражение равно True, второй не вычисляется.

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b

В предыдущем примере приводятся результаты True, Trueа False также соответственно. В вычислении firstCheckвторого выражения не вычисляется, так как первый уже True. Однако в вычислении secondCheckвычисляется второе выражение.

Пример 2

В следующем примере показана Ifинструкция ...Then , содержащая два вызова процедуры. Если первый вызов возвращается True, вторая процедура не вызывается. Это может привести к непредвиденным результатам, если вторая процедура выполняет важные задачи, которые всегда должны выполняться при выполнении этого раздела кода.

If testFunction(5) = True OrElse otherFunction(4) = True Then
    ' If testFunction(5) is True, otherFunction(4) is not called.
    ' Insert code to be executed.
End If

См. также