Postupy: Definice operátora převodu (Visual Basic)
Pokud jste definovali třídy nebo struktury, můžete definovat pomocí operátoru typ převodu mezi typ třídy nebo struktury a jiný typ dat (například Integer, Double, nebo String).
Definovat typ převodu, jako CType – funkce (Visual Basic) postupu v rámci třídy nebo struktury.Všechny postupy převodu musí být Public Shared, a každá z nich je nutné zadat buď Rozšíření (Visual Basic) nebo Narrowing (Visual Basic).
Definování třídy nebo struktury operátor se také nazývá přetížení operátor.
Příklad
Následující příklad definuje operátory převodu mezi struktuře nazvané digit a 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
Můžete vyzkoušet strukturu digit s následujícím kódem.
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
Viz také
Úkoly
Postupy: Definice operátora (Visual Basic)
Postupy: Volání procedury operátora (Visual Basic)
Postupy: Použití třídy, která definuje operátory (Visual Basic).
Postupy: Definice struktury (Visual Basic)
Referenční dokumentace
Koncepty
Procedury operátoru (Visual Basic)