Funzione CType (Visual Basic)
Restituisce il risultato della conversione esplicita di un'espressione in un tipo di dati, un oggetto, una struttura, una classe o un'interfaccia specificati.
Sintassi
CType(expression, typename)
Parti
expression
Qualsiasi espressione valida. Se il valore di expression
non è compreso nell'intervallo consentito da typename
, Visual Basic genera un'eccezione.
typename
Qualsiasi espressione valida all'interno di una clausola As
in un'istruzione Dim
, ovvero il nome di qualsiasi tipo di dati, oggetto, struttura, classe o interfaccia.
Osservazioni:
Suggerimento
È anche possibile usare le funzioni seguenti per eseguire una conversione dei tipi:
- Funzioni di conversione dei tipi, ad esempio
CByte
,CDbl
eCInt
, che eseguono una conversione in un tipo di dati specifico. Per altre informazioni, vedere Funzioni di conversione del tipo. - Operatore DirectCast o Operatore TryCast. Questi operatori richiedono che un tipo erediti o implementi l'altro tipo. Possono offrire prestazioni leggermente migliori rispetto a
CType
quando si esegue la conversione da e verso il tipo di datiObject
.
CType
viene compilato inline, il che significa che il codice di conversione fa parte del codice che valuta l'espressione. In alcuni casi, il codice viene eseguito più velocemente perché non viene chiamata alcuna routine per eseguire la conversione.
Se non viene definita alcuna conversione da expression
a typename
( ad esempio da Integer
a Date
), in Visual Basic viene visualizzato un messaggio di errore in fase di compilazione.
Se una conversione non riesce in fase di esecuzione, viene generata l'eccezione appropriata. Se una conversione che supporta un minor numero di dati ha esito negativo, OverflowException è il risultato più comune. Se la conversione non è definita, viene generata un'eccezione InvalidCastException. Ad esempio, ciò può verificarsi se expression
è di tipo Object
e il tipo di runtime non ha alcuna conversione in typename
.
Se il tipo di dati di expression
o typename
è una classe o una struttura definita, è possibile definire CType
in tale classe o struttura come operatore di conversione. In questo modo CType
funge da operatore di overload. In questo caso, è possibile controllare il comportamento delle conversioni da e verso la classe o la struttura, incluse le eccezioni che possono essere generate.
Parole chiave di conversione
Di seguito è riportato un confronto tra le parole chiave di conversione dei tipi.
Parola chiave | Tipo di dati | Relazione tra argomenti | Errore di runtime |
---|---|---|---|
CType |
Qualsiasi tipo di dati | È necessario definire una conversione verso un tipo di dati più esteso o più piccolo | Genera InvalidCastException |
Operatore DirectCast | Qualsiasi tipo di dati | Un tipo deve ereditare o implementare l'altro tipo | Genera InvalidCastException |
TryCast | Solo tipi di riferimento | Un tipo deve ereditare o implementare l'altro tipo | Restituisce Nothing |
Overload
L'operatore CType
può anche essere sottoposto a overload su una classe o una struttura definita all'esterno del codice. Se il codice viene convertito verso o da una classe o una struttura di questo tipo, assicurarsi di comprendere il comportamento dell'operatore CType
. Per altre informazioni, vedere Operator Procedures.
Conversione di oggetti dinamici
Le conversioni dei tipi di oggetti dinamici vengono eseguite da conversioni dinamiche definite dall'utente che usano i metodi TryConvert o BindConvert. Se si usano oggetti dinamici, usare il metodo CTypeDynamic per convertire l'oggetto dinamico.
Esempio
Nell'esempio seguente viene utilizzata la funzione CType
per convertire un'espressione nel tipo di dati Single
.
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
Per altri esempi, vedere Conversioni implicite ed esplicite.