Conversioni implicite ed esplicite (Visual Basic)
Una conversione implicita non richiede alcuna sintassi speciale nel codice sorgente. Nell'esempio seguente, Visual Basic consente di convertire in modo implicito il valore di k in un valore a virgola mobile e precisione singola prima di assegnarlo a q.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
In una conversione esplicita viene utilizzata una parola chiave per la conversione del tipo. Visual Basic offre diverse parole chiave di questo tipo che assegnano un'espressione tra parentesi al tipo di dati desiderato. Queste parole chiave operano come funzioni, ma il compilatore genera il codice inline, pertanto l'esecuzione risulta leggermente più veloce rispetto a una chiamata di funzione.
Nell'estensione che segue dell'esempio precedente la parola chiave CInt converte il valore di q in un Integer prima di assegnarlo a k.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Parole chiave di conversione
Nella tabella che segue sono illustrate le parole chiave di conversione disponibili.
Parola chiave per la conversione del tipo |
Tipo di dati in cui viene convertita un'espressione |
Tipi di dati disponibili di un'espressione da convertire |
CBool |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, String, Object |
|
CByte |
Qualsiasi tipo numerico, inclusi SByte e i tipi enumerati, Boolean, String, Object |
|
CChar |
String, Object |
|
CDate |
String, Object |
|
CDbl |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CDec |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CInt |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CLng |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CObj |
Qualsiasi tipo |
|
CSByte |
Qualsiasi tipo numerico, inclusi Byte e i tipi enumerati, Boolean, String, Object |
|
CShort |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CSng |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CStr |
Qualsiasi tipo numerico, inclusi Byte, SBytee i tipi enumerati, Boolean, Char, la matrice Char, Date, Object |
|
CType |
Tipo specificato dopo la virgola (,) |
Quando si effettua la conversione in un tipo di dati elementare, inclusa una matrice di un tipo elementare, gli stessi tipi disponibili per la corrispondente parola chiave di conversione Quando si effettua la conversione in un tipo di dati composito, le interfacce implementate e le classi dalle quali tale tipo eredita Quando si effettua la conversione in una classe o struttura sulla quale si è effettuato l'overload CType, tale classe o struttura |
CUInt |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CULng |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
|
CUShort |
Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object |
La funzione CType
La Funzione CType (Visual Basic) agisce su due argomenti. Il primo è l'espressione da convertire e il secondo il tipo di dati o la classe di oggetti di destinazione. Tenere presente che il primo argomento deve essere un'espressione, non un tipo.
CType è una funzione inline, ovvero il codice compilato effettua la conversione, spesso senza generare una chiamata di funzione. determinando un miglioramento delle prestazioni.
Per un confronto di CType con le altre parole chiave di conversione dei tipi, vedere Operatore DirectCast (Visual Basic) e Operatore TryCast (Visual Basic).
Tipi elementari
Nell'esempio seguente viene illustrato l'utilizzo di CType.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Tipi compositi
È possibile utilizzare CType per convertire valori in tipi di dati compositi nonché in tipi di base. È inoltre possibile utilizzarla per assegnare una classe di oggetti al tipo di una delle relative interfacce, come illustrato nell'esempio che segue.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Tipi di matrice
La funzione CType consente inoltre di convertire i tipi di dati della matrice, come nell'esempio che segue.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
Per ulteriori informazioni e un esempio, vedere Conversioni di matrici (Visual Basic).
Tipi che definiscono CType
È possibile definire CType su una classe o una struttura definita. Ciò consente di convertire i valori nel e dal tipo della classe o della struttura. Per ulteriori informazioni e un esempio, vedere Procedura: definire un operatore di conversione (Visual Basic).
Nota
È necessario che i valori utilizzati con una parola chiave di conversione siano validi per il tipo di dati di destinazione. In caso contrario verrà generato un errore.Se si tenta ad esempio di convertire un valore Long in un valore Integer, è necessario che il valore di Long sia compreso nell'intervallo di valori validi per il tipo di dati Integer.
Avviso
In fase di esecuzione la specifica di CType per eseguire la conversione da un tipo di classe a un altro non riesce se il tipo di origine non deriva dal tipo di destinazione.Questo errore genera un'eccezione InvalidCastException.
Se, tuttavia, uno dei tipi è una struttura o una classe definita ed è stata specificata la funzione CType su tale struttura o classe, è possibile eseguire correttamente una conversione se questa soddisfa i requisiti della funzione CType. Vedere Procedura: definire un operatore di conversione (Visual Basic).
L'esecuzione di una conversione esplicita è anche nota come cast di un'espressione in un tipo di dati o una classe di oggetti specifica.
Vedere anche
Attività
Procedura: convertire un oggetto in un altro tipo in Visual Basic
Risoluzione dei problemi relativi ai tipi di dati (Visual Basic)
Riferimenti
Riepilogo dei tipi di dati (Visual Basic)
Funzioni di conversione del tipo (Visual Basic)
Concetti
Conversioni fra stringhe e altri tipi (Visual Basic)