Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Логическое выражение — это выражение, которое вычисляет значение логического типа данных: 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
.
Операторы Short-Circuiting
Логические операторы 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
, выполнение переходит к следующей строке кода без вычисления правого выражения, поскольку левое выражение уже устраивает все выражение.
Сравнение с операторами, не являющимисяShort-Circuiting.
В отличие от этого, обе стороны логического оператора оцениваются при использовании логических операторов And
Or
. В следующем примере показано это.
If 45 < 12 And testFunction(3) = 81 Then
' Add code to continue execution.
End If
Предыдущий пример вызывает testFunction()
, даже если левое выражение вычисляется False
.
Скобочные выражения
Вы можете использовать скобки для управления порядком оценки логических выражений. Выражения, заключенные в скобки, оцениваются в первую очередь. Для нескольких уровней вложения приоритет предоставляется наиболее глубоко вложенным выражениям. В скобках оценка выполняется в соответствии с правилами приоритета оператора. Дополнительные сведения см. в разделе "Приоритет оператора" в Visual Basic.