方法: 変換演算子を定義する (Visual Basic)
クラスまたは構造体を定義している場合は、クラスまたは構造体の型と別のデータ型 (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
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET