Оператор AndAlso (Visual Basic)
Выполняет кратковременное логическое объединение двух выражений.
Синтаксис
result = expression1 AndAlso expression2
Детали
Термин | Определение |
---|---|
result |
Обязательный. Произвольное выражение Boolean . Результатом является Boolean результат сравнения двух выражений. |
expression1 |
Обязательный. Произвольное выражение Boolean . |
expression2 |
Обязательный. Произвольное выражение Boolean . |
Замечания
Как говорят, логическая операция является короткой, если скомпилированный код может обойти оценку одного выражения в зависимости от результата другого выражения. Если результат первого выражения, вычисляемого, определяет конечный результат операции, нет необходимости оценивать второе выражение, так как оно не может изменить окончательный результат. Короткое замыкание может повысить производительность, если обходное выражение является сложным или если оно включает вызовы процедур.
Если оба выражения оцениваются True
, result
имеет значение True
. В следующей таблице показано, как result
определяется.
Если expression1 имеет значение |
И expression2 есть |
Значение result равно |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(не вычисляется) | False |
Примечание.
В логическом сравнении And
оператор всегда вычисляет оба выражения, которые могут включать вызовы процедур. Оператор AndAlso выполняет короткое замыкание, что означает, что если expression1
естьFalse
, то expression2
не оценивается.
Типы данных
Оператор AndAlso
определяется только для логического типа данных. Visual Basic преобразует каждый операнд в соответствии с необходимостью перед Boolean
оценкой выражения. При назначении результата числовым типом Visual Basic преобразует его из Boolean
этого типа, который False
становится 0
и True
становится -1
.
Дополнительные сведения см. в разделе "Логические преобразования типов".
Перегрузка
Оператор And и оператор IsFalse могут быть перегружены, что означает, что класс или структура могут переопределить их поведение, если операнда имеет тип этого класса или структуры. Перегрузка And
операторов IsFalse
влияет на поведение AndAlso
оператора. Если код используется AndAlso
в классе или структуре, которая перегружает And
, IsFalse
и убедитесь, что вы понимаете их переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.
Пример 1
В следующем примере оператор используется AndAlso
для выполнения логического сочетания двух выражений. Результатом является Boolean
значение, представляющее, является ли целое связанное выражение истинным. Если первое выражение равно False
, второй не вычисляется.
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b
Приведенный выше пример создает результаты True
, False
а False
также соответственно. В вычислении secondCheck
второго выражения не вычисляется, так как первый уже False
. Однако в вычислении thirdCheck
вычисляется второе выражение.
Пример 2
В следующем примере показана Function
процедура, которая ищет заданное значение среди элементов массива. Если массив пуст или превышена длина массива, While
инструкция не проверяет элемент массива в значении поиска.
Public Function findValue(ByVal arr() As Double,
ByVal searchValue As Double) As Double
Dim i As Integer = 0
While i <= UBound(arr) AndAlso arr(i) <> searchValue
' If i is greater than UBound(arr), searchValue is not checked.
i += 1
End While
If i > UBound(arr) Then i = -1
Return i
End Function