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