비교 연산자(Visual Basic)

다음은 Visual Basic에 정의된 비교 연산자입니다.

< 연산자

<= 연산자

> 연산자

>= 연산자

= 연산자

<> 연산자

Is 연산자

IsNot 연산자

Like 연산자

이러한 연산자는 두 식을 비교하여 같는지 여부와 같지 않은지 여부를 결정합니다. Is, IsNot, Like은 별도의 도움말 페이지에서 자세히 설명합니다. 관계형 비교 연산자는 이 페이지에서 자세히 설명합니다.

구문

result = expression1 comparisonoperator expression2  
result = object1 [Is | IsNot] object2  
result = string Like pattern  

부분

result
필수입니다. 비교 결과를 나타내는 Boolean 값입니다.

expression1, expression2
필수입니다. 임의의 식입니다.

comparisonoperator
필수입니다. 관계형 비교 연산자입니다.

object1, object2
필수입니다. 모든 참조 개체 이름입니다.

string
필수입니다. 임의의 String 식입니다.

pattern
필수입니다. 모든 String 식 또는 문자 범위입니다.

설명

다음 표에는 관계형 비교 연산자 목록과 resultTrue인지 또는 False인지 결졍하는 조건이 포함되어 있습니다.

연산자 True False
<(보다 작음) expression1 < expression2 expression1>= expression2
<=(작거나 같음) expression1<= expression2 expression1 > expression2
>(보다 큼) expression1 > expression2 expression1<= expression2
>=(크거나 같음) expression1>= expression2 expression1 < expression2
=(같음) expression1 = expression2 expression1 <> expression2
<>(같지 않음) expression1 <> expression2 expression1 = expression2

참고 항목

= 연산자는 대입 연산자로도 사용됩니다.

Is 연산자, IsNot 연산자 및 Like 연산자에는 이전 표의 연산자와 다른 특정 비교 기능이 있습니다.

숫자 비교

형식 Single의 식을 형식 Double 중 하나와 비교하면 Single 식이 Double로 변환됩니다. 이 동작은 Visual Basic 6에 있는 동작과 반대입니다.

마찬가지로 Decimal 형식의 식을 형식 Single 또는 Double 식과 비교하면 Decimal 식은 Single 또는 Double으로 변환됩니다. Decimal 식의 경우 1E-28보다 작은 분수 값은 손실될 수 있습니다. 이러한 분수 값 손실로 인해 두 값이 같지 않은 경우 동일하게 비교할 수 있습니다. 이러한 이유로 같음(=)을 사용하여 두 부동 소수점 변수를 비교할 때 주의해야 합니다. 두 숫자 사이의 차이의 절대값이 허용되는 허용 오차보다 작은지 여부를 테스트하는 것이 더 안전합니다.

부동 소수점 부정확성

부동 소수점 숫자로 작업할 때 항상 메모리에 정확한 표현이 있는 것은 아니라는 점에 유의하세요. 이로 인해 값 비교 및 Mod 연산자와 같은 특정 작업에서 예기치 않은 결과가 발생할 수 있습니다. 자세한 내용은 문제 해결 데이터 형식을 참조하세요.

문자열 비교

문자열을 비교할 때 문자열 식은 Option Compare 설정에 따라 알파벳 정렬 순서에 따라 평가됩니다.

Option Compare Binary은 문자의 내부 이진 표현에서 파생된 정렬 순서에 따라 문자열을 비교합니다. 정렬 순서는 코드 페이지에 의해 결정됩니다. 다음 예제에서는 일반적인 이진 정렬 순서를 보여 줍니다.

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text는 애플리케이션의 로캘에 의해 결정되는 대/소문자를 구분하지 않는 텍스트 정렬 순서에 따라 문자열 비교를 기반으로 합니다. Option Compare Text을 설정하고 앞의 예제에서 문자를 설정하고 정렬하면 다음 텍스트 정렬 순서가 적용됩니다.

(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)

로캘 종속성

Option Compare Text을 설정할 때 문자열 비교 결과는 애플리케이션이 실행 중인 로캘에 따라 달라질 수 있습니다. 두 문자는 한 로캘에서 같지만 다른 로캘에서는 비교할 수 없습니다. 문자열 비교를 사용하여 로그온 시도를 허용할지 여부와 같은 중요한 결정을 내리는 경우 로캘 민감도에 대해 경고해야 합니다. 로캘을 고려하여 Option Compare Binary을 설정하거나 StrComp를 호출하는 것이 좋습니다.

관계형 비교 연산자를 사용한 형식 없는 프로그래밍

Option Strict On에서는 Object 식과 함께 관계형 비교 연산자를 사용할 수 없습니다. Option StrictOff거나 expression1 또는 expression2Object식인 경우 런타임 형식은 비교 방법을 결정합니다. 다음 표에서는 피연산자의 런타임 형식에 따라 식을 비교하는 방법과 비교 결과를 보여 줍니다.

피연산자가 다음과 같은 경우 비교는
둘 다 String 문자열 정렬 특성에 따라 비교를 정렬합니다.
모두 숫자 Double로 변환된 개체, 숫자 비교.
숫자 1개와 String 1개 StringDouble로 변환되고 숫자 비교가 수행됩니다. StringDouble로 변환할 수 없으면 할 수 없으면 InvalidCastException이 throw됩니다.
둘 중 하나 또는 둘 다 String 이외의 참조 형식입니다. InvalidCastException이 throw됩니다.

숫자 비교는 Nothing을 0으로 처리됩니다. 문자열 비교는 Nothing""(빈 문자열)로 처리합니다.

오버로딩

관계형 비교 연산자(<. <=, >, >=, =, <>)는 오버로드될 수 있습니다. 즉, 피연산자가 해당 클래스 또는 구조체 형식을 가질 때 클래스 또는 구조체의 동작을 재정의할 수 있습니다. 코드에서 이러한 클래스 또는 구조체에서 이러한 연산자를 사용하는 경우 다시 정의된 동작을 이해해야 합니다. 자세한 내용은 Operator Procedures을 참조하세요.

= 연산자는 대입 연산자가 아니라 관계형 비교 연산자로만 오버로드할 수 있습니다.

예시

다음 예제에서는 식을 비교하는 데 사용하는 관계형 비교 연산자의 다양한 용도를 보여 줍니다. 관계형 비교 연산자는 명시된 식이 True로 계산되는지 여부를 나타내는 Boolean 결과를 반환합니다. 문자열에 > 연산자와 < 연산자를 적용하면 문자열의 일반 사전순 정렬 순서를 사용하여 비교됩니다. 이 순서는 로캘 설정에 따라 달라질 수 있습니다. 정렬이 대/소문자를 구분하는지 여부는 옵션 비교 설정에 따라 달라집니다.

Dim x As testClass
Dim y As New testClass()
x = y
If x Is y Then
    ' Insert code to run if x and y point to the same instance.
End If

앞의 예제에서 첫 번째 비교는 False을 반환하고 나머지 비교는 True를 반환합니다.

참고 항목