다음을 통해 공유


방법: 연산자 정의

업데이트: 2007년 11월

클래스나 구조체를 정의한 경우 두 피연산자 중 하나 또는 모두가 클래스나 구조체의 형식일 때 수행할 표준 연산자(예: *, <> 또는 And) 동작을 정의할 수 있습니다.

표준 연산자를 클래스나 구조체 내의 연산자 프로시저로 정의합니다. 모든 연산자 프로시저는 PublicShared여야 합니다.

클래스 또는 구조체에서 연산자를 정의하는 것을 연산자 오버로딩이라고도 합니다.

예제

다음 예제에서는 height라는 구조체에 대한 + 연산자를 정의합니다. 이 구조체는 피트와 인치로 측정된 높이를 사용합니다. 1인치는 2.54센티미터이고 1피트는 12인치입니다. 정규화된 값(인치 < 12.0)을 유지하기 위해 생성자는 modulo 12 산술 연산을 수행합니다. + 연산자는 생성자를 사용하여 정규화된 값을 생성합니다.

Public Shadows Structure height
    ' Need Shadows because System.Windows.Forms.Form also defines property Height.
    Private feet As Integer
    Private inches As Double
    Public Sub New(ByVal f As Integer, ByVal i As Double)
        Me.feet = f + (CInt(i) \ 12)
        Me.inches = i Mod 12.0
    End Sub
    Public Overloads Function ToString() As String
        Return Me.feet & "' " & Me.inches & """"
    End Function
    Public Shared Operator +(ByVal h1 As height, ByVal h2 As height) _
        As height
        Return New height(h1.feet + h2.feet, h1.inches + h2.inches)
    End Operator
End Structure

다음 코드를 사용하여 height 구조체를 테스트할 수 있습니다.

Public Sub consumeHeight()
    Dim p1 As New height(3, 10)
    Dim p2 As New height(4, 8)
    Dim p3 As height = p1 + p2
    Dim s As String = p1.ToString() & " + " & p2.ToString() _
        & " = " & p3.ToString() & " (= 8' 6"" ?)"
    Dim p4 As New height(2, 14)
    s &= vbCrLf & "2' 14"" = " & p4.ToString() & " (= 3' 2"" ?)"
    Dim p5 As New height(4, 24)
    s &= vbCrLf & "4' 24"" = " & p5.ToString() & " (= 6' 0"" ?)"
    MsgBox(s)
End Sub

자세한 내용과 예제는 Operator Overloading in Visual Basic 2005를 참조하십시오.

참고 항목

작업

방법: 변환 연산자 정의

방법: 연산자 프로시저 호출

방법: 연산자를 정의하는 클래스 사용

방법: 구조체 선언

개념

연산자 프로시저

참조

Operator 문

Structure 문