다음을 통해 공유


AndAlso 연산자(Visual Basic)

두 식에서 단락 논리 결합을 수행합니다.

문법

result = expression1 AndAlso expression2  

부분

기간 정의
result 필수 사항입니다. 모든 Boolean 식입니다. 결과는 Boolean 두 식의 비교 결과입니다.
expression1 필수 사항입니다. 모든 Boolean 식입니다.
expression2 필수 사항입니다. 모든 Boolean 식입니다.

비고

컴파일된 코드가 다른 식의 결과에 따라 한 식의 평가를 무시할 수 있는 경우 논리 연산은 단락 이라고 합니다. 계산된 첫 번째 식의 결과가 작업의 최종 결과를 결정하는 경우 최종 결과를 변경할 수 없으므로 두 번째 식을 평가할 필요가 없습니다. 바이패스 식이 복잡하거나 프로시저 호출이 포함된 경우 단락은 성능을 향상시킬 수 있습니다.

두 식이 모두 계산 True되면 . result 입니다 True. 다음 표에서는 결정 방법을 result 보여 줍니다.

If expression1 is 그리고 expression2 result
True True True
True False False
False (평가되지 않음) False

비고

부울 비교에서 연산자는 And 항상 프로시저 호출을 포함할 수 있는 두 식을 모두 평가합니다. AndAlso 연산자는 단락을 수행합니다. 즉, 이 경우 expression1Falseexpression2 평가되지 않습니다.

데이터 형식

AndAlso 연산자는 부울 데이터 형식에 대해서만 정의됩니다. Visual Basic은 식을 평가하기 전에 필요에 Boolean 따라 각 피연산자를 변환합니다. 결과를 숫자 형식에 할당하면 Visual Basic에서 Boolean 해당 형식 False 으로 변환됩니다.0True-1 자세한 내용은 부울 형식 변환을 참조하세요.

오버로딩

And 연산자와 IsFalse 연산자를 오버로드할 수 있습니다. 즉, 피연산자에 해당 클래스 또는 구조체의 형식이 있을 때 클래스 또는 구조체가 해당 동작을 다시 정의할 수 있습니다. 및 IsFalse 연산자를 And 오버로드하면 연산자의 동작에 영향을 줍니다AndAlso. 코드가 오버로드 AndIsFalse되는 클래스 또는 구조체에서 사용하는 AndAlso 경우 다시 정의된 동작을 이해해야 합니다. 자세한 내용은 운영자 프로시저를 참조하세요.

예제 1

다음 예제에서는 연산자를 AndAlso 사용하여 두 식에 논리적 결합을 수행합니다. 결과는 Boolean 결합된 전체 식이 true인지 여부를 나타내는 값입니다. 첫 번째 식이 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

앞의 예제에서는 각각 , FalseFalseTrue결과를 생성합니다. 계산 secondCheck에서 두 번째 식은 첫 번째 식이 이미 False있으므로 계산되지 않습니다. 그러나 두 번째 식은 계산에서 thirdCheck계산됩니다.

예제 2

다음 예제에서는 배열의 요소 중에서 지정된 값을 검색하는 프로시저를 보여줍니다 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

참고하십시오