Operator Statement
클래스 또는 구조체에서 연산자 프로시저를 정의하는 연산자 기호, 피연산자 및 코드를 선언합니다.
구문
[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
[ statements ]
[ statements ]
Return returnvalue
[ statements ]
End Operator
부분
attrlist
선택 사항. 특성 목록을 참조하세요.
Public
필수입니다. 이 연산자 프로시저에 공용 액세스 권한이 있음을 나타냅니다.
Overloads
선택 사항. 오버로드를 참조하세요.
Shared
필수입니다. 이 연산자 프로시저가 공유 프로시저임을 나타냅니다.
Shadows
선택 사항. Shadows를 참조하세요.
Widening
Narrowing
을 지정하지 않는 한 변환 연산자에 필요합니다. 이 연산자 프로시저가 확대 변환을 정의함을 나타냅니다. 이 도움말 페이지의 "전환 확대 및 축소"를 참조하세요.
Narrowing
Widening
을 지정하지 않는 한 변환 연산자에 필요합니다. 이 연산자 프로시저가 축소 변환을 정의함을 나타냅니다. 이 도움말 페이지의 "전환 확대 및 축소"를 참조하세요.
operatorsymbol
필수입니다. 이 연산자 프로시저가 정의하는 연산자의 기호 또는 식별자입니다.
operand1
필수입니다. 단항 연산자(변환 연산자 포함)의 단일 피연산자 또는 이항 연산자의 왼쪽 피연산자의 이름 및 형식입니다.
operand2
이진 연산자에 필요합니다. 이항 연산자의 오른쪽 피연산자의 이름과 형식입니다.
operand1
및 operand2
에는 다음과 같은 구문과 부분이 있습니다.
[ ByVal ] operandname [ As operandtype ]
요소 | 설명 |
---|---|
ByVal |
선택 사항이지만 전달 메커니즘은 ByVal이어야 합니다. |
operandname |
필수입니다. 이 피연산자를 나타내는 변수의 이름입니다. Declared Element Names을 참조하세요. |
operandtype |
Option Strict 가 On 이 아닌 한 선택 사항입니다. 이 피연산자의 데이터 형식입니다. |
type
Option Strict
가 On
이 아닌 한 선택 사항입니다. 연산자 프로시저가 반환하는 값의 데이터 형식입니다.
statements
선택 사항. 연산자 프로시저가 실행하는 문 블록입니다.
returnvalue
필수입니다. 연산자 프로시저가 호출 코드에 반환하는 값입니다.
End
Operator
필수입니다. 이 연산자 프로시저의 정의를 종료합니다.
설명
클래스 또는 구조체에서만 Operator
를 사용할 수 있습니다. 즉, 연산자의 선언 컨텍스트는 원본 파일, 네임스페이스, 모듈, 인터페이스, 프로시저 또는 블록이 될 수 없습니다. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.
모든 연산자는 Public Shared
여야 합니다. 두 피연산자 모두에 대해 ByRef
, Optional
또는 ParamArray
를 지정할 수 없습니다.
연산자 기호나 식별자를 사용하여 반환 값을 보유할 수 없습니다. Return
문을 사용해야 하며 값을 지정해야 합니다. Return
문은 프로시저의 어느 위치에나 나타날 수 있습니다.
이러한 방식으로 연산자를 정의하는 것을 Overloads
키워드 사용 여부에 관계없이 연산자 오버로드라고 합니다. 다음 표에는 정의할 수 있는 연산자가 나와 있습니다.
Type | 연산자 |
---|---|
단항 | |
이진 | |
변환(단항) | CType |
이진 목록의 =
연산자는 대입 연산자가 아닌 비교 연산자입니다.
CType
을 정의할 때 Widening
또는 Narrowing
을 지정해야 합니다.
일치하는 쌍
특정 연산자를 일치된 쌍으로 정의해야 합니다. 이러한 쌍의 연산자 중 하나를 정의하는 경우 다른 연산자도 정의해야 합니다. 일치하는 쌍은 다음과 같습니다.
=
및<>
>
및<
>=
및<=
IsTrue
및IsFalse
데이터 형식 제한
정의하는 모든 연산자는 해당 연산자를 정의하는 클래스 또는 구조체와 관련되어야 합니다. 이는 클래스 또는 구조체가 다음과 같은 데이터 형식으로 나타나야 함을 의미합니다.
단항 연산자의 피연산자입니다.
이항 연산자의 피연산자 중 하나 이상입니다.
변환 연산자의 피연산자 또는 반환 형식입니다.
특정 연산자에는 다음과 같은 추가 데이터 형식 제한이 있습니다.
IsTrue
및IsFalse
연산자를 정의하는 경우 둘 다Boolean
형식을 반환해야 합니다.<<
및>>
연산자를 정의하는 경우 둘 다operand2
의operandtype
에 대해Integer
형식을 지정해야 합니다.
반환 형식은 피연산자의 형식과 일치할 필요가 없습니다. 예를 들어, =
또는 <>
와 같은 비교 연산자는 두 피연산자가 모두 Boolean
이 아니더라도 Boolean
을 반환할 수 있습니다.
논리 및 비트 연산자
And
, Or
, Not
및 Xor
연산자는 Visual Basic에서 논리 또는 비트 연산을 수행할 수 있습니다. 그러나 클래스나 구조체에 이러한 연산자 중 하나를 정의하는 경우 해당 비트 연산만 정의할 수 있습니다.
Operator
문을 사용하여 AndAlso
연산자를 직접 정의할 수 없습니다. 그러나 다음 조건을 충족한 경우 AndAlso
를 사용할 수 있습니다.
AndAlso
에 사용하려는 동일한 피연산자 형식에 대해And
을 정의했습니다.And
정의는 이를 정의한 클래스 또는 구조체와 동일한 형식을 반환합니다.And
를 정의한 클래스 또는 구조체에IsFalse
연산자를 정의했습니다.
마찬가지로, 클래스 또는 구조체의 반환 형식을 사용하여 동일한 피연산자에 Or
를 정의하고 클래스 또는 구조체에 IsTrue
를 정의한 경우 OrElse
를 사용할 수 있습니다.
Widening and Narrowing Conversions
확대 변환은 런타임에 항상 성공하지만 축소 변환은 런타임에 실패할 수 있습니다. 자세한 내용은 Widening and Narrowing Conversions을 참조하세요.
변환 프로시저를 Widening
으로 선언하는 경우 프로시저 코드가 실패를 생성해서는 안 됩니다. 이것은 다음을 의미합니다.
항상
type
형식의 유효한 값을 반환해야 합니다.가능한 모든 예외 및 기타 오류 조건을 처리해야 합니다.
호출하는 모든 프로시저에서 반환되는 모든 오류를 처리해야 합니다.
변환 프로시저가 성공하지 못하거나 처리되지 않은 예외가 발생할 가능성이 있는 경우 이를 Narrowing
으로 선언해야 합니다.
예시
다음 코드 예에서는 Operator
문을 사용하여 And
, Or
, IsFalse
및 IsTrue
연산자에 대한 연산자 프로시저를 포함하는 구조체의 개요를 정의합니다. And
및 Or
는 각각 abc
형식과 반환 형식 abc
의 두 피연산자를 사용합니다. IsFalse
및 IsTrue
는 각각 abc
형식의 단일 피연산자를 취하고 Boolean
을 반환합니다. 이러한 정의를 통해 호출 코드는 abc
형식의 피연산자와 함께 And
, AndAlso
, Or
및 OrElse
를 사용할 수 있습니다.
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
참고 항목
.NET