Condividi tramite


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

Tipo di dati Boolean (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, String, Object

CByte

Tipo di dati Byte (Visual Basic)

Qualsiasi tipo numerico, inclusi SByte e i tipi enumerati, Boolean, String, Object

CChar

Tipo di dati Char (Visual Basic)

String, Object

CDate

Tipo di dati Date (Visual Basic)

String, Object

CDbl

Tipo di dati Double (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CDec

Tipo di dati Decimal (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CInt

Tipo di dati Integer (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CLng

Tipo di dati Long (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CObj

Tipo di dati Object

Qualsiasi tipo

CSByte

Tipo di dati SByte (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte e i tipi enumerati, Boolean, String, Object

CShort

Tipo di dati Short (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CSng

Tipo di dati Single (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CStr

Tipo di dati String (Visual Basic)

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

Tipo di dati UInteger

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CULng

Tipo di dati ULong (Visual Basic)

Qualsiasi tipo numerico, inclusi Byte, SByte e i tipi enumerati, Boolean, String, Object

CUShort

Tipo di dati UShort (Visual Basic)

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)

Altre risorse

Conversioni di tipi in Visual Basic

Strutture (Visual Basic)