AndAlso — Operator (Visual Basic)
Wykonuje połączenie logiczne z krótkim obwodem na dwóch wyrażeniach.
Składnia
result = expression1 AndAlso expression2
generatora
Termin | Definicja |
---|---|
result |
Wymagany. Dowolne Boolean wyrażenie. Wynik jest Boolean wynikiem porównania dwóch wyrażeń. |
expression1 |
Wymagany. Dowolne Boolean wyrażenie. |
expression2 |
Wymagany. Dowolne Boolean wyrażenie. |
Uwagi
Mówi się, że operacją logiczną jest zwarcie , jeśli skompilowany kod może pominąć ocenę jednego wyrażenia w zależności od wyniku innego wyrażenia. Jeśli wynik pierwszego obliczonego wyrażenia określa końcowy wynik operacji, nie ma potrzeby obliczania drugiego wyrażenia, ponieważ nie może zmienić wyniku końcowego. Zwarcie może poprawić wydajność, jeśli pominięte wyrażenie jest złożone lub jeśli obejmuje wywołania procedury.
Jeśli oba wyrażenia mają wartość True
, result
to .True
W poniższej tabeli przedstawiono sposób result
określania.
Jeśli expression1 jest |
I expression2 jest |
Wartość parametru result to |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(nie oceniono) | False |
Uwaga
W porównaniu And
logicznym operator zawsze ocenia oba wyrażenia, które mogą obejmować wykonywanie wywołań procedur. Operator AndAlso wykonuje zwarcie, co oznacza, że jeśli expression1
jest False
, expression2
to nie jest oceniane.
Typy danych
Operator AndAlso
jest zdefiniowany tylko dla typu danych logicznych. Program Visual Basic konwertuje każdy operand zgodnie z potrzebami Boolean
przed oceną wyrażenia. Jeśli przypiszesz wynik do typu liczbowego, język Visual Basic konwertuje go z Boolean
na taki typ, który False
staje się 0
i True
staje się .-1
Aby uzyskać więcej informacji, zobacz Konwersje typów logicznych.
Przeciążenie
Operator And i Operator IsFalse mogą być przeciążone, co oznacza, że klasa lub struktura może ponownie zdefiniować swoje zachowanie, gdy operand ma typ tej klasy lub struktury. Przeciążenie And
operatorów i IsFalse
wpływa na zachowanie AndAlso
operatora. Jeśli kod jest używany AndAlso
w klasie lub strukturze, która przeciąża And
i IsFalse
, upewnij się, że rozumiesz ich ponownie zdefiniowane zachowanie. Aby uzyskać więcej informacji, zobacz Procedury operatorów.
Przykład 1
W poniższym przykładzie AndAlso
użyto operatora do wykonania logicznego połączenia na dwóch wyrażeniach. Wynik jest wartością reprezentującą Boolean
, czy całe połączone wyrażenie ma wartość true. Jeśli pierwsze wyrażenie to False
, drugi nie jest obliczany.
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
Powyższy przykład generuje wyniki True
odpowiednio , False
i False
. W obliczeniu secondCheck
wartości wyrażenie drugie nie jest obliczane, ponieważ pierwsze jest już False
. Jednak drugie wyrażenie jest obliczane w obliczeniu thirdCheck
wartości .
Przykład 2
W poniższym przykładzie przedstawiono procedurę, która wyszukuje daną Function
wartość wśród elementów tablicy. Jeśli tablica jest pusta lub jeśli długość tablicy została przekroczona, While
instrukcja nie testuje elementu tablicy względem wartości wyszukiwania.
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