AndAlso-Operator (Visual Basic)
Führt eine verkürzte logische Konjunktion zweier Ausdrücke aus.
Syntax
result = expression1 AndAlso expression2
Bestandteile
Begriff | Definition |
---|---|
result |
Erforderlich. Beliebiger Boolean -Ausdruck. Das Ergebnis ist das Boolean -Ergebnis des Vergleichs der beiden Ausdrücke. |
expression1 |
Erforderlich. Beliebiger Boolean -Ausdruck. |
expression2 |
Erforderlich. Beliebiger Boolean -Ausdruck. |
Bemerkungen
Ein logischer Vorgang wird als Kurzschluss bezeichnet, wenn der kompilierte Code die Auswertung eines Ausdrucks abhängig vom Ergebnis eines anderen Ausdrucks umgehen kann. Wenn das Ergebnis des ersten ausgewerteten Ausdrucks das Endergebnis des Vorgangs bestimmt, ist es nicht erforderlich, den zweiten Ausdruck auszuwerten, da er das Endergebnis nicht ändern kann. Kurzschlüsse können die Leistung verbessern, wenn der umgangene Ausdruck komplex ist oder Prozeduraufrufe umfasst.
Wenn beide Ausdrücke als True
ausgewertet werden , ist result
True
. Die folgende Tabelle veranschaulicht, wie result
bestimmt wird.
Wenn expression1 gleich |
Und expression2 ist |
Der Wert von result ist |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(nicht ausgewertet) | False |
Hinweis
Im booleschen Vergleich wertet der And
-Operator immer beide Ausdrücke aus, die Prozeduraufrufe umfassen können. Der AndAlso-Operator führt Kurzschlüsse durch, d. h., wenn expression1
False
ist, wird expression2
nicht ausgewertet.
Datentypen
Der AndAlso
Operator ist nur für den booleschen Datentyp definiert. Visual Basic konvertiert jeden Operanden nach Bedarf in, bevor Boolean
der Ausdruck ausgewertet wird. Wenn Sie das Ergebnis einem numerischen Typ zuweisen, konvertiert Visual Basic es von Boolean
in diesen Typ, sodass False
0
und True
zu -1
wird.
Weitere Informationen finden Sie unter Umwandlung und Typkonvertierungen.
Überladen
Der Und-Operator und der IsFalse-Operator können überladen werden, was bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann, wenn ein Operand den Typ dieser Klasse oder Struktur aufweist. Das Überladen der And
Operatoren und IsFalse
wirkt sich auf das Verhalten des AndAlso
Operators aus. Wenn Ihr Code für eine Klasse oder Struktur verwendet AndAlso
wird, die überlastet ist, und And
stellen Sie sicher, dass Sie ihr neu definiertes IsFalse
Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.
Beispiel 1
Im folgenden Beispiel wird der AndAlso
-Operator verwendet, um eine logische Verbindung zwischen zwei Ausdrücken auszuführen. Das Ergebnis ist ein Boolean
-Wert, der angibt, ob der gesamte zusammenhängende Ausdruck wahr ist. Wenn der erste Ausdruck False
ist, wird der zweite nicht ausgewertet.
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
Im vorherigen Beispiel werden Ergebnisse von True
, False
und False
erzeugt. Bei der Berechnung von secondCheck
wird der zweite Ausdruck nicht ausgewertet, da der erste bereits False
ist. Der zweite Ausdruck wird jedoch bei der Berechnung von thirdCheck
ausgewertet.
Beispiel 2
Das folgende Beispiel zeigt eine Function
Prozedur, die nach einem bestimmten Wert zwischen den Elementen eines Arrays sucht. Wenn das Array leer ist oder die Arraylänge überschritten wurde, testet die While
-Anweisung das Arrayelement nicht anhand des Suchwerts.
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