Condividi tramite


DirectCast

Aggiornamento: novembre 2007

Introduce un'operazione di conversione dei tipi basata sull'ereditarietà o sull'implementazione.

Note

Per la conversione DirectCast non utilizza le routine di supporto di runtime di Visual Basic, per poter garantire prestazioni migliori rispetto a CType durante la conversione da e verso il tipo di dati Object.

È possibile utilizzare la parola chiave DirectCast analogamente alla Funzione CType e alla parola chiave TryCast. Viene specificata un'espressione come primo argomento e un tipo per la relativa conversione come secondo argomento. DirectCast richiede una relazione di ereditarietà o di implementazione tra i tipi di dati dei due argomenti. Questo significa che uno dei tipi deve ereditare dall'altro o implementarlo.

Condizioni di errore

Se non viene rilevata alcuna relazione di ereditarietà o implementazione, DirectCast genera un errore del compilatore. L'assenza di errori del compilatore non garantisce tuttavia la riuscita della conversione. Se la conversione desiderata è verso un tipo di dati più piccolo, è possibile che l'operazione non riesca in fase di esecuzione. In questo caso, il runtime genera un errore InvalidCastException.

Parole chiave di conversione

Di seguito è riportato un confronto tra le parole chiave di conversione dei tipi.

Keyword

Tipi di dati

Relazione degli argomenti

Errore di runtime

Funzione CType

Qualsiasi tipo di dati

La conversione verso un tipo di dati più grande o più piccolo deve essere definita tra i due tipi di dati

Genera InvalidCastException

DirectCast

Qualsiasi tipo di dati

Uno dei tipi deve ereditare dall'altro o implementarlo

Genera InvalidCastException

TryCast

Solo tipi di riferimento

Uno dei tipi deve ereditare dall'altro o implementarlo

Restituisce Nothing (Visual Basic)

Esempio

Nell'esempio riportato di seguito vengono illustrati due utilizzi di DirectCast, uno con esito negativo in fase di esecuzione e un altro con esito positivo.

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

Nell'esempio precedente il tipo di q in fase di esecuzione è Double. CType ha esito positivo perché è possibile convertire Double in Integer. Tuttavia, il primo DirectCast ha esito negativo in fase di esecuzione poiché il tipo di Double in fase di esecuzione non presenta alcuna relazione di ereditarietà con Integer, anche in presenza di una conversione. Il secondo DirectCast ha esito positivo poiché esegue la conversione dal tipo Form al tipo Control, dal quale Form eredita.

Vedere anche

Concetti

Conversioni di ampliamento e restrizione

Conversioni implicite ed esplicite

Riferimenti

Convert.ChangeType