다음을 통해 공유


연산자 문

클래스 또는 구조체에 연산자 프로시저를 정의하는 연산자 기호, 피연산자 및 코드를 선언합니다.

문법

[ <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지정해야 합니다.

일치하는 쌍

특정 연산자를 일치하는 쌍으로 정의해야 합니다. 이러한 쌍의 연산자 중 하나를 정의하는 경우 다른 연산자도 정의해야 합니다. 일치하는 쌍은 다음과 같습니다.

  • =<>

  • ><

  • >=<=

  • IsTrueIsFalse

데이터 형식 제한

정의하는 모든 연산자는 정의한 클래스 또는 구조체를 포함해야 합니다. 즉, 클래스 또는 구조체가 다음 데이터 형식으로 표시되어야 합니다.

  • 단항 연산자의 피연산자입니다.

  • 이진 연산자의 피연산자 중 하나 이상

  • 변환 연산자의 피연산자 또는 반환 형식입니다.

특정 연산자는 다음과 같이 추가 데이터 형식 제한이 있습니다.

  • 연산자와 IsFalse 연산자를 IsTrue 정의하는 경우 둘 다 형식을 Boolean 반환해야 합니다.

  • >> 연산자를 << 정의하는 경우 둘 다 의 operand2형식을 Integeroperandtype 지정해야 합니다.

반환 형식은 피연산자의 형식에 해당할 필요가 없습니다. 예를 들어 두 피연산자가 모두 없는 경우에도 반환하거나 반환할 수 있는 비교 연산 = 자입니다Boolean.Boolean<>

논리 및 비트 연산자

And, OrNotXor 연산자는 Visual Basic에서 논리 또는 비트 연산을 수행할 수 있습니다. 그러나 클래스 또는 구조체에서 이러한 연산자 중 하나를 정의하는 경우 비트 연산만 정의할 수 있습니다.

문을 사용하여 직접 Operator 연산자를 AndAlso 정의할 수 없습니다. 그러나 다음 조건을 충족한 경우 사용할 AndAlso 수 있습니다.

  • 에 사용할 동일한 피연산자 형식을 정의 And 했습니다 AndAlso.

  • 정의는 And 정의한 클래스 또는 구조체와 동일한 형식을 반환합니다.

  • 정의한 IsFalse 클래스 또는 구조체에 연산자를 정의 And했습니다.

마찬가지로 동일한 피연산자에서 클래스 또는 구조체의 반환 형식을 정의 Or 하고 클래스 또는 구조체에 정의 IsTrue 한 경우 사용할 OrElse 수 있습니다.

확대 및 축소 변환

확장 변환은 항상 런타임에 성공하지만 런타임에 축소 변환은 실패할 수 있습니다. 자세한 내용은 확대 및 축소 변환을 참조하세요.

변환 프로시저를 Widening선언하는 경우 프로시저 코드에서 오류를 생성해서는 안 됩니다. 이것은 다음을 의미합니다.

  • 항상 유효한 형식 type값을 반환해야 합니다.

  • 가능한 모든 예외 및 기타 오류 조건을 처리해야 합니다.

  • 호출하는 모든 프로시저에서 오류 반환을 처리해야 합니다.

변환 프로시저가 성공하지 못하거나 처리되지 않은 예외가 발생할 수 있는 가능성이 있는 경우 이를 선언 Narrowing해야 합니다.

예시

다음 코드 예제에서는 문을 사용하여 Operator , OrIsFalseIsTrue 연산자에 대한 연산자 프로시저를 포함하는 구조체의 개요를 And정의합니다. And 각각 형식과 Or 반환 형식 abcabc의 두 피연산자를 사용합니다. IsFalseIsTrue 피연산자는 형식 abc 의 단일 피연산자를 사용하고 반환 Boolean합니다. 이러한 정의를 사용하면 호출 코드가 형식abc의 피연산자와 함께 , AndAlsoOrOrElse 를 사용할 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

참고하십시오