비교 연산자(Visual Basic)
다음은 Visual Basic에 정의된 비교 연산자입니다.
<
연산자
<=
연산자
>
연산자
>=
연산자
=
연산자
<>
연산자
이러한 연산자는 두 식을 비교하여 같는지 여부와 같지 않은지 여부를 결정합니다. 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
식 또는 문자 범위입니다.
설명
다음 표에는 관계형 비교 연산자 목록과 result
이 True
인지 또는 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 Strict
이 Off
거나 expression1
또는 expression2
가 Object
식인 경우 런타임 형식은 비교 방법을 결정합니다. 다음 표에서는 피연산자의 런타임 형식에 따라 식을 비교하는 방법과 비교 결과를 보여 줍니다.
피연산자가 다음과 같은 경우 | 비교는 |
---|---|
둘 다 String |
문자열 정렬 특성에 따라 비교를 정렬합니다. |
모두 숫자 | Double 로 변환된 개체, 숫자 비교. |
숫자 1개와 String 1개 |
String 이 Double 로 변환되고 숫자 비교가 수행됩니다. String 을 Double 로 변환할 수 없으면 할 수 없으면 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
를 반환합니다.
참고 항목
.NET