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


Логические выражения (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.

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

В отличие от этого, обе стороны логического оператора оцениваются при использовании логических операторов AndOr . В следующем примере показано это.

If 45 < 12 And testFunction(3) = 81 Then
    ' Add code to continue execution.
End If

Предыдущий пример вызывает testFunction(), даже если левое выражение вычисляется False.

Скобочные выражения

Вы можете использовать скобки для управления порядком оценки логических выражений. Выражения, заключенные в скобки, оцениваются в первую очередь. Для нескольких уровней вложения приоритет предоставляется наиболее глубоко вложенным выражениям. В скобках оценка выполняется в соответствии с правилами приоритета оператора. Дополнительные сведения см. в разделе "Приоритет оператора" в Visual Basic.

См. также