Condividi tramite


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 e CInt, 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 dati Object.

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.

Vedi anche