Оператор 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