AndAlso – operátor (Visual Basic)
Provádí logická spojení s zkratováním na dvou výrazech.
Syntaxe
result = expression1 AndAlso expression2
Součástky
Pojem | definice |
---|---|
result |
Povinný: Libovolný Boolean výraz. Výsledkem je Boolean porovnání dvou výrazů. |
expression1 |
Povinný: Libovolný Boolean výraz. |
expression2 |
Povinný: Libovolný Boolean výraz. |
Poznámky
Logická operace se říká, že je zkratka , pokud zkompilovaný kód může obejít vyhodnocení jednoho výrazu v závislosti na výsledku jiného výrazu. Pokud výsledek prvního vyhodnoceného výrazu určuje konečný výsledek operace, není nutné vyhodnotit druhý výraz, protože nemůže změnit konečný výsledek. Zkratování může zlepšit výkon, pokud je vynechaný výraz složitý nebo pokud zahrnuje volání procedur.
Pokud se oba výrazy vyhodnotí jako True
, result
je True
. Následující tabulka ukazuje, jak result
je určeno.
Pokud expression1 je |
A expression2 je |
Hodnota result je |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(nevyhodnocené) | False |
Poznámka:
V logickém porovnání And
operátor vždy vyhodnocuje oba výrazy, což může zahrnovat volání procedur. Operátor AndAlso provádí zkratování, což znamená, že pokud expression1
je False
, pak expression2
není vyhodnocen.
Typy dat
Operátor AndAlso
je definován pouze pro logický datový typ. Jazyk Visual Basic převede každý operand podle potřeby na Boolean
před vyhodnocením výrazu. Pokud přiřadíte výsledek číselnému typu, jazyk Visual Basic ho převede na Boolean
tento typ, který False
se stane 0
a True
stane se -1
z něj .
Další informace naleznete v tématu Logické převody typů.
Přetížení
Operátor And a IsFalse – operátor mohou být přetíženy, což znamená, že třída nebo struktura mohou předefinovat jejich chování, pokud má operand typ této třídy nebo struktury. And
Přetížení operátorů a IsFalse
operátorů ovlivňuje chování operátoruAndAlso
. Pokud váš kód používá AndAlso
ve třídě nebo struktuře, která přetížení And
, a IsFalse
nezapomeňte pochopit jejich předdefinované chování. Další informace naleznete v tématu Procedury operátoru.
Příklad 1
Následující příklad používá AndAlso
operátor k provedení logické spojení se dvěma výrazy. Výsledkem je Boolean
hodnota, která představuje, zda je celý konjoinovaný výraz pravdivý. Pokud je False
první výraz , druhý se nevyhodnocuje.
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
Předchozí příklad vytvoří výsledky True
, False
a False
, v uvedeném pořadí. Při výpočtu secondCheck
se druhý výraz nevyhodnocuje, protože první je již False
. Druhý výraz se však vyhodnocuje ve výpočtu výrazu thirdCheck
.
Příklad 2
Následující příklad ukazuje proceduru Function
, která hledá danou hodnotu mezi prvky pole. Pokud je matice prázdná nebo pokud byla překročena délka pole, While
příkaz neotestuje prvek pole proti vyhledávací hodnotě.
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