Condividi tramite


Operatore DirectCast (Visual Basic)

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 a Funzione CType (Visual Basic) e alla parola chiave Operatore TryCast (Visual Basic). 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 tipi di dati di due argomenti. Ciò significa che un tipo deve ereditare dall'altro tipo 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.

Parola chiave

Tipi di dati

Relazione degli argomenti

Errore di runtime

Funzione CType (Visual Basic)

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

Operatore TryCast (Visual Basic)

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 runtime q è 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

Riferimenti

Convert.ChangeType

Concetti

Conversioni di ampliamento e restrizione (Visual Basic)

Conversioni implicite ed esplicite (Visual Basic)