Udostępnij za pośrednictwem


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 Trueodpowiednio , Falsei False. W obliczeniu secondCheckwartości wyrażenie drugie nie jest obliczane, ponieważ pierwsze jest już False. Jednak drugie wyrażenie jest obliczane w obliczeniu thirdCheckwartoś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

Zobacz też