다음을 통해 공유


방법: 변환 연산자 정의

업데이트: 2007년 11월

클래스나 구조체를 정의한 경우 클래스 또는 구조체의 형식과 다른 데이터 형식(예: Integer, Double 또는 String) 간에 형식 변환 연산자를 정의할 수 있습니다.

이때 형식 변환을 클래스 또는 구조체 내의 CType 함수 프로시저로 정의합니다. 모든 변환 프로시저는 Public Shared여야 하고 각 프로시저는 Widening 또는 Narrowing을 지정해야 합니다.

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

예제

다음 예제에서는 digit 및 Byte 구조체 간에 변환 연산자를 정의합니다.

Public Structure digit
Private dig As Byte
    Public Sub New(ByVal b As Byte)
        If (b < 0 OrElse b > 9) Then Throw New _
            System.ArgumentException("Argument outside range for Byte")
        Me.dig = b
    End Sub
    Public Shared Widening Operator CType(ByVal d As digit) As Byte
        Return d.dig
    End Operator
    Public Shared Narrowing Operator CType(ByVal b As Byte) As digit
        Return New digit(b)
    End Operator
End Structure

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

Public Sub consumeDigit()
    Dim d1 As New digit(4)
    Dim d2 As New digit(7)
    Dim d3 As digit = CType(CByte(3), digit)
    Dim s As String = "Initial 4 generates " & CStr(CType(d1, Byte)) _
        & vbCrLf & "Initial 7 generates " & CStr(CType(d2, Byte)) _
        & vbCrLf & "Converted 3 generates " & CStr(CType(d3, Byte))
    Try
        Dim d4 As digit
        d4 = CType(CType(d1, Byte) + CType(d2, Byte), digit)
    Catch e4 As System.Exception
        s &= vbCrLf & "4 + 7 generates " & """" & e4.Message & """"
    End Try
    Try
        Dim d5 As digit = CType(CByte(10), digit)
    Catch e5 As System.Exception
        s &= vbCrLf & "Initial 10 generates " & """" & e5.Message & """"
    End Try
    MsgBox(s)
End Sub

참고 항목

작업

방법: 연산자 정의

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

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

방법: 구조체 선언

개념

연산자 프로시저

암시적 변환과 명시적 변환

확대 변환과 축소 변환

참조

Operator 문

Structure 문