方法: 変換演算子を定義する (Visual Basic)

定義されたクラスまたは構造体がある場合、その型と別のデータ型 (Integer、Double、または String) の間の型変換演算子を定義できます。

型変換はクラスまたは構造体の内部に CType 関数 (Visual Basic) プロシージャとして定義します。 すべての変換プロシージャは Public Shared であることが必要です。また、それぞれに Widening (Visual Basic) または Narrowing (Visual Basic) を指定する必要があります。

クラスまたは構造体で演算子を定義することを、演算子をオーバーロードするといいます。

使用例

構造体 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

参照

処理手順

方法: 演算子を定義する (Visual Basic)

方法: 演算子プロシージャを呼び出す (Visual Basic)

方法: 演算子を定義するクラスを使用する (Visual Basic)

方法: 構造体を宣言する (Visual Basic)

関連項目

Operator ステートメント

Structure ステートメント

概念

演算子プロシージャ (Visual Basic)

暗黙の型変換と明示的な型変換 (Visual Basic)

拡大変換と縮小変換 (Visual Basic)