Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se è stata definita una classe o una struttura, è possibile definire un operatore di conversione dei tipi tra il tipo della classe o della struttura e un altro tipo di dati , ad esempio Integer, Doubleo String.
Definire la conversione del tipo come routine Operatore CType all'interno della classe o della struttura. Tutte le procedure di conversione devono essere Public Sharede ognuna di esse deve specificare Widening o Narrowing.
La definizione di un operatore in una classe o struttura è detta anche sovraccarico dell'operatore.
Esempio
Nell'esempio seguente vengono definiti gli operatori di conversione tra una struttura denominata digit e un oggetto 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
È possibile testare la struttura digit con il codice seguente.
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
Vedere anche
- Procedure dell'operatore
- Procedura: Definire un operatore
- Procedura: Chiamare una routine di operatore
- Procedura: Usare una classe che definisce gli operatori
- Dichiarazione dell'Operatore
- Dichiarazione della Struttura
- Procedura: Dichiarare una struttura
- Conversioni implicite ed esplicite
- Conversioni verso un tipo di dati più esteso e verso un tipo di dati più piccolo