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

См. также