Оператор AndAlso (Visual Basic)

 

Самая актуальная документация по версии-кандидату Visual Studio 2017: Документация по версии-кандидату Visual Studio 2017.

Выполняет упрощенную операцию логического умножения над двумя выражениями.

  
result = expression1 AndAlso expression2  

ТерминОпределение
resultОбязательный. Произвольное выражение типа Boolean. При сравнении двух выражений будет получен результат типа Boolean.
expression1Обязательный. Произвольное выражение типа Boolean.
expression2Обязательный. Произвольное выражение типа Boolean.

Логическая операция называется сокращенной, если компилируемый код может пропустить оценку одного выражения, зависящего от результата другого выражения. Если результат первого оцененного выражения определяет конечный результат операции, то отсутствует необходимость оценивать второе выражение, так как это не повлияет на конечный результат. Сокращенное вычисление улучшает производительность, если пропущенное выражение является сложным или содержит вызовы процедур.

Если оба выражения определяются значением True, то результат result имеет значение True. В следующей таблице показан порядок определения результата result.

Если expression1 имеет значениеИ выражение expression2 имеет значениезначение result будет следующим:
TrueTrueTrue
TrueFalseFalse
False(не вычисляется)False

Оператор AndAlso определен только для типа данных Boolean (Тип данных Boolean). В Visual Basic каждый операнд при необходимости преобразуется в тип Boolean, после чего операция полностью выполняется с использованием типа Boolean. Если результату назначить числовой тип, Visual Basic преобразует его из типа Boolean в этот тип. Это может привести к непредвиденному поведению. Например, результат операции 5 AndAlso 12 равен –1, если преобразуется в тип Integer.

Оператор Оператор And и Оператор IsFalse может быть перегруженным. Это означает, что класс или структура может переопределить его поведение, если операнд имеет тип класса или структуры. Перегрузка операторовAnd и IsFalse влияет на поведение оператора AndAlso. Если в коде используется оператор AndAlso для класса или структуры, которая перегружает And и IsFalse, убедитесь, что вы понимаете его переопределенное поведение. Дополнительные сведения см. в разделе Процедуры операторов.

В данном примере оператор 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.

В следующем примере процедура 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

Логические (побитовые) операторы
Порядок применения операторов в Visual Basic
Список операторов, сгруппированных по функциональному назначению
Оператор And
Оператор IsFalse
Логические и побитовые операторы в Visual Basic

Показ: