Nasıl yapılır: Bir Dönüşüm İşleci Tanımlama (Visual Basic)
Bir sınıf veya yapı tanımladıysanız, sınıf veya yapı türü ve başka bir veri türü arasında tür dönüştürme işleci tanımlayabilirsiniz (gibi Integer, Double, veya String).
Tür dönüştürmesi olarak tanımlayan bir CType İşlevi (Visual Basic) yordamı sınıf veya yapı içinde.Tüm dönüştürme yordamları olmalıdır Public Shared, her birini belirtmeniz gerekir ve Genişletme (Visual Basic) veya Daraltma (Visual Basic).
Bir işleç bir sınıf veya yapı tanımlama olarak da adlandırılır aşırı işleci.
Örnek
Aşağıdaki örnek olarak adlandırılan bir yapı arasında dönüştürme işleçleri tanımlar digit ve bir 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
Yapısını test edebilirsiniz digit yerine aşağıdaki kodu.
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
Ayrıca bkz.
Görevler
Nasıl yapılır: Bir İşleci Tanımlama (Visual Basic)
Nasıl yapılır: Bir İşleç Yordamı Çağırma (Visual Basic)
Nasıl yapılır: İşleçleri Tanımlayan Bir Sınıf Kullanma (Visual Basic)
Nasıl yapılır: Bir Yapıyı Bildirme (Visual Basic)
Başvuru
Kavramlar
İşleç Yordamları (Visual Basic)