Логические выражения (Visual Basic)
Логическое выражение — это выражение, которое вычисляет значение логического типа данных: True
или False
. Boolean
выражения могут принимать несколько форм. Самый простой — это прямое сравнение значения переменной Boolean
с Boolean
литеральным, как показано в следующем примере.
If newCustomer = True Then
' Insert code to execute if newCustomer = True.
Else
' Insert code to execute if newCustomer = False.
End If
Два значения оператора =
Обратите внимание, что оператор newCustomer = True
назначения выглядит так же, как выражение в предыдущем примере, но оно выполняет другую функцию и используется по-другому. В предыдущем примере выражение newCustomer = True
представляет логическое значение, а =
знак интерпретируется как оператор сравнения. В автономной инструкции =
знак интерпретируется как оператор назначения и назначает значение справа переменной слева. Это показано в следующем примере.
If newCustomer = True Then
newCustomer = False
End If
Дополнительные сведения см. в разделе "Сравнения значений " и "Операторы".
Операторы сравнения
Операторы сравнения, такие как =
, <
, >
<>
, <=
и >=
создают логические выражения, сравнивая выражение в левой части оператора с выражением справа от оператора и оценивая результат как True
или False
. Это показано в следующем примере.
42 < 81
Так как 42 меньше 81, логическое выражение в предыдущем примере вычисляется True
. Дополнительные сведения об этом типе выражения см. в разделе "Сравнения значений".
Операторы сравнения в сочетании с логическими операторами
Выражения сравнения можно объединить с помощью логических операторов для создания более сложных логических выражений. В следующем примере показано использование операторов сравнения в сочетании с логическим оператором.
x > y And x < 1000
В предыдущем примере значение общего выражения зависит от значений выражений на каждой And
стороне оператора. Если оба выражения являются True
, то общее выражение вычисляется True
. Если одно из выражений имеет значение False
, то все выражение вычисляется False
.
Операторы короткого замыкания
Логические операторы AndAlso
и OrElse
поведение, известное как короткое замыкание. Оператор короткого замыкания сначала оценивает левый операнд. Если левый операнд определяет значение всего выражения, выполнение программы продолжается без оценки правильного выражения. Это показано в следующем примере.
If 45 < 12 AndAlso testFunction(3) = 81 Then
' Add code to continue execution.
End If
В предыдущем примере оператор вычисляет левое выражение 45 < 12
. Так как левое выражение вычисляется False
, все логические выражения должны оцениваться False
. Таким образом, выполнение программы пропускает выполнение кода в блоке If
без вычисления правильного выражения. testFunction(3)
Этот пример не вызывается testFunction()
, так как левое выражение фальсифицирует все выражение.
Аналогичным образом, если левое выражение в логическом выражении OrElse
вычисляется True
, выполнение переходит к следующей строке кода без оценки правого выражения, так как левое выражение уже проверило все выражение.
Сравнение с операторами без короткого замыкания
В отличие от этого, обе стороны логического оператора оцениваются при использовании логических операторов And
Or
. Это показано в следующем примере.
If 45 < 12 And testFunction(3) = 81 Then
' Add code to continue execution.
End If
Предыдущий пример вызывает testFunction()
, даже если левое выражение вычисляется False
.
Скобки
Скобок можно использовать для управления порядком оценки логических выражений. Выражения, заключенные в скобки, оцениваются первым. Для нескольких уровней вложения приоритет предоставляется наиболее глубоко вложенным выражениям. В скобках оценка выполняется в соответствии с правилами приоритета оператора. Дополнительные сведения см. в разделе "Приоритет оператора" в Visual Basic.