AndAlso 연산자(Visual Basic)
두 식에 순환이 짧은 논리 결합을 수행합니다.
구문
result = expression1 AndAlso expression2
부분
용어 | 정의 |
---|---|
result |
필수입니다. 임의의 Boolean 식입니다. 결과는 두 식을 비교한 Boolean 결과입니다. |
expression1 |
필수입니다. 임의의 Boolean 식입니다. |
expression2 |
필수입니다. 임의의 Boolean 식입니다. |
설명
컴파일된 코드가 다른 식의 결과에 따라 한 식의 평가를 바이패스할 수 있는 경우 논리 연산이 단락된다고 합니다. 평가된 첫 번째 식의 결과로 연산의 최종 결과가 결정되는 경우 두 번째 식은 최종 결과를 변경할 수 없으므로 두 번째 식을 평가할 필요가 없습니다. 바이패스된 식이 복잡하거나 프로시저 호출과 관련된 경우 단락을 사용하면 성능이 향상될 수 있습니다.
두 식이 모두 True
로 평가되는 경우, result
은 True
입니다. 다음 표에서는 result
가 결정되는 방법을 보여 줍니다.
expression1 |
expression2 |
result 값 |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(평가되지 않음) | False |
참고 항목
부울 비교에서 And
연산자는 항상 프로시저 호출을 포함할 수 있는 두 식을 모두 평가합니다. AndAlso 연산자는 단락(short-circuiting)을 수행합니다. 즉, expression1
이 False
인 경우 expression2
는 평가되지 않습니다.
데이터 형식
AndAlso
연산자는 부울 데이터 형식에 대해서만 정의됩니다. Visual Basic은 식을 평가하기 전에 필요에 따라 각 피연산자를 Boolean
로 변환합니다. 결과를 숫자 형식에 할당하는 경우 Visual Basic은 Boolean
에서 해당 형식으로 변환하여 False
가 0
이 되고 True
가 -1
이 됩니다.
자세한 내용은 부울 형식 변환을 참조하세요.
오버로딩
And 연산자 및 IsFalse 연산자는 오버로드될 수 있습니다. 즉 피연산자가 해당 클래스 또는 구조체 형식을 가질 때 클래스 또는 구조체의 동작을 재정의할 수 있습니다. And
및 IsFalse
연산자를 오버로드하면 AndAlso
연산자의 동작에 영향을 줍니다. 코드가 And
및 IsFalse
를 오버로드하는 클래스 또는 구조체에 AndAlso
를 사용하는 경우 다시 정의된 동작을 이해해야 합니다. 자세한 내용은 Operator Procedures을 참조하세요.
예 1
다음 예에서는 AndAlso
연산자를 사용하여 두 식에 대한 논리적 결합을 수행합니다. 결과는 결합된 전체 식이 true인지 여부를 나타내는 Boolean
값입니다. 첫 번째 식이 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
앞의 예에서는 각각 True
, False
및 False
의 결과를 생성합니다. 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
참고 항목
.NET