Operator 문
클래스 또는 구조체의 연산자 프로시저를 정의하는 연산자 기호, 피연산자 및 코드를 선언합니다.
[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
[ statements ]
[ statements ]
Return returnvalue
[ statements ]
End Operator
요소
attrlist
선택적 요소.특성 목록을 참조하십시오.Public
필수 요소.이 연산자 프로시저에 Public(Visual Basic) 액세스 권한이 있음을 나타냅니다.Overloads
선택적 요소.자세한 내용은 Overloads(Visual Basic)를 참조하십시오.Shared
필수 요소.이 연산자 프로시저가 Shared(Visual Basic) 프로시저임을 나타냅니다.Shadows
선택적 요소.자세한 내용은 Shadows(Visual Basic)를 참조하십시오.Widening
Narrowing을 지정하지 않는 경우 변환 연산자에 필수적 요소입니다.이 연산자 프로시저가 Widening(Visual Basic) 변환을 정의함을 나타냅니다.이 도움말 페이지의 "확대 변환과 축소 변환"을 참조하십시오.Narrowing
Widening을 지정하지 않는 경우 변환 연산자에 필수적 요소입니다.이 연산자 프로시저가 Narrowing(Visual Basic) 변환을 정의함을 나타냅니다.이 도움말 페이지의 "확대 변환과 축소 변환"을 참조하십시오.operatorsymbol
필수 요소.이 연산자 프로시저에서 정의하는 연산자의 기호 또는 식별자입니다.operand1
필수 요소.단항 연산자(변환 연산자 포함)의 단일 피연산자 또는 이항 연산자의 왼쪽 피연산자의 이름과 형식입니다.operand2
이항 연산자에 필수적 요소입니다.이항 연산자의 오른쪽 피연산자의 이름과 형식입니다.operand1 및 operand2의 구문과 구성 요소는 다음과 같습니다.
[ ByVal ] operandname [ As operandtype ]
파트
설명
ByVal
선택적 요소이지만 전달 메커니즘이 ByVal(Visual Basic)이어야 합니다.
operandname
필수 요소.이 피연산자를 나타내는 변수의 이름입니다.선언된 요소 이름(Visual Basic)를 참조하십시오.
operandtype
Option Strict가 On이 아닌 경우 선택적 요소입니다.이 피연산자의 데이터 형식입니다.
type
Option Strict가 On이 아닌 경우 선택적 요소입니다.연산자 프로시저에서 반환하는 값의 데이터 형식입니다.statements
선택적 요소.피연산자 프로시저에서 실행되는 문의 블록입니다.returnvalue
필수 요소.연산자 프로시저에서 호출 코드로 반환하는 값입니다.EndOperator
필수 요소.이 연산자 프로시저의 정의를 끝냅니다.
설명
클래스나 구조체에서만 Operator를 사용할 수 있습니다.즉, 연산자의 선언 컨텍스트는 소스 파일, 네임스페이스, 모듈, 인터페이스, 프로시저 또는 블록일 수 없습니다.자세한 내용은 선언 컨텍스트 및 기본 액세스 수준(Visual Basic)을 참조하십시오.
모든 연산자는 Public Shared여야 합니다.ByRef, Optional 또는 ParamArray를 피연산자로 지정할 수 없습니다.
연산자 기호나 식별자를 사용하여 반환 값을 저장할 수 없습니다.Return 문을 사용하여 값을 지정해야 합니다.프로시저 내의 임의의 위치에 여러 개의 Return 문을 사용할 수 있습니다.
Overloads 키워드를 사용하는지 여부에 관계없이 이 방법으로 연산자를 정의하는 것을 연산자 오버로드라고 합니다.다음 표에서는 정의할 수 있는 연산자를 보여 줍니다.
형식 |
연산자 |
---|---|
단항 |
+, -, IsFalse, IsTrue, Not |
Binary |
+, -, *, /, \, &, ^, >>, <<, =, <>, >, >=, <, <=, And, Like, Mod, Or, Xor |
변환(단항) |
CType |
이진 목록의 = 연산자는 할당 연산자가 아니라 비교 연산자입니다.
CType을 정의하는 경우 Widening 또는 Narrowing을 지정해야 합니다.
일치하는 쌍
특정 연산자를 일치하는 쌍으로 정의해야 합니다.이러한 일치하는 쌍 중 하나의 연산자를 정의하는 경우 다른 하나에 대한 연산자도 정의해야 합니다.일치하는 쌍은 다음과 같습니다.
= 및 <>
> 및 <
>= 및 <=
IsTrue 및 IsFalse
데이터 형식 제한
정의된 모든 연산자에는 연산자를 정의한 클래스나 구조체가 포함되어야 합니다.즉, 클래스나 구조체가 다음과 같은 데이터 형식으로 표시되어야 합니다.
단항 연산자의 피연산자
이항 연산자의 하나 이상의 피연산자
변환 연산자의 반환 형식 또는 피연산자
특정 연산자에 다음과 같은 추가 데이터 형식 제한이 있습니다.
IsTrue 및 IsFalse 연산자를 정의하는 경우 두 연산자는 모두 Boolean 형식을 반환해야 합니다.
<< 및 >> 연산자를 정의하는 경우 두 연산자는 모두 operand2의 operandtype으로 Integer 형식을 지정해야 합니다.
반환 형식은 피연산자의 형식과 일치하지 않아도 됩니다.예를 들어, = 또는 <>과 같은 비교 연산자는 피연산자가 Boolean이 아니더라도 Boolean을 반환할 수 있습니다.
논리 및 비트 연산자
And, Or, Not 및 Xor 연산자는 Visual Basic에서 논리 연산이나 비트 연산을 수행할 수 있습니다.그러나 클래스 또는 구조체에서 이러한 연산자 중 하나를 정의하는 경우에는 비트 연산만 정의할 수 있습니다.
AndAlso 연산자는 Operator 문을 사용하여 직접 정의할 수 없습니다.다음 조건을 충족하는 경우에는 AndAlso를 사용할 수 있습니다.
AndAlso에 사용하려는 것과 동일한 피연산자 형식에 And를 정의했습니다.
And 정의에서는 And를 정의한 클래스 또는 구조체와 동일한 형식을 반환합니다.
And를 정의한 클래스 또는 구조체에 IsFalse 연산자를 정의했습니다.
마찬가지로 클래스나 구조체의 반환 형식을 사용하여 동일한 피연산자에 Or를 정의하고 클래스나 구조체에 IsTrue를 정의한 경우 OrElse를 사용할 수 있습니다.
확대 변환과 축소 변환
확대 변환은 런타임에서 항상 성공하지만 축소 변환은 런타임에서 실패할 수 있습니다.자세한 내용은 확대 변환과 축소 변환(Visual Basic)을 참조하십시오.
변환 프로시저를 Widening으로 선언하는 경우 프로시저 코드가 실패하지 않아야 합니다.이것은 다음을 의미합니다.
항상 올바른 type 형식 값을 반환해야 합니다.
가능한 모든 예외와 기타 오류 조건을 처리해야 합니다.
호출하는 프로시저의 모든 오류 반환을 처리해야 합니다.
변환 프로시저가 실패할 확률이 있거나 처리되지 않은 예외가 발생할 수 있는 경우에는 Narrowing으로 선언해야 합니다.
예제
다음 코드 예제에서는 Operator 문을 사용하여 And, Or, IsFalse 및 IsTrue 연산자에 대한 연산자 프로시저를 포함하는 구조체를 개략적으로 정의합니다.And와 Or는 형식이 abc이고 반환 형식이 abc인 두 개의 피연산자를 사용합니다.IsFalse와 IsTrue는 형식이 abc이고 반환 형식이 Boolean인 단일 피연산자를 사용합니다.이러한 정의를 사용하면 호출 코드에서 And, AndAlso, Or 및 OrElse를 abc 형식 피연산자와 함께 사용할 수 있습니다.
Public Structure abc
Dim d As Date
Public Shared Operator And(ByVal x As abc, ByVal y As abc) As abc
Dim r As New abc
' Insert code to calculate And of x and y.
Return r
End Operator
Public Shared Operator Or(ByVal x As abc, ByVal y As abc) As abc
Dim r As New abc
' Insert code to calculate Or of x and y.
Return r
End Operator
Public Shared Operator IsFalse(ByVal z As abc) As Boolean
Dim b As Boolean
' Insert code to calculate IsFalse of z.
Return b
End Operator
Public Shared Operator IsTrue(ByVal z As abc) As Boolean
Dim b As Boolean
' Insert code to calculate IsTrue of z.
Return b
End Operator
End Structure
참고 항목
작업
방법: 연산자를 정의하는 클래스 사용(Visual Basic)