Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Introduce un'operazione di conversione dei tipi basata sull'ereditarietà o sull'implementazione.
Osservazioni:
DirectCast non usa le routine helper di runtime di Visual Basic per la conversione, pertanto può offrire prestazioni leggermente migliori rispetto CType a quando si esegue la conversione da e verso il tipo di Objectdati .
Si usa la DirectCast parola chiave simile al modo in cui si usa l'operatore CType e la parola chiave TryCast Operator . Specificare un'espressione come primo argomento e un tipo in cui convertirlo come secondo argomento.
DirectCast richiede una relazione di ereditarietà o implementazione tra i tipi di dati dei due argomenti. Ciò significa che un tipo deve ereditare o implementare l'altro.
Errori e errori
DirectCast genera un errore del compilatore se rileva che non esiste alcuna relazione di ereditarietà o implementazione. Tuttavia, la mancanza di un errore del compilatore non garantisce una conversione corretta. Se la conversione desiderata è ridotta, potrebbe non riuscire in fase di esecuzione. In questo caso, il runtime genera un InvalidCastException errore.
Parole chiave di conversione
Di seguito è riportato un confronto tra le parole chiave di conversione dei tipi.
| Parola chiave | Tipi di dati | Relazione tra argomenti | Errore di runtime |
|---|---|---|---|
| Operatore CType | Qualsiasi tipo di dati | È necessario definire una conversione verso un tipo di dati più esteso o verso un tipo di dati più piccolo | Getta InvalidCastException |
DirectCast |
Qualsiasi tipo di dati | Un tipo deve ereditare o implementare l'altro tipo | Getta InvalidCastException |
| Operatore TryCast | Solo tipi di riferimento | Un tipo deve ereditare o implementare l'altro tipo | Restituisce Nothing |
Esempio
Nell'esempio seguente vengono illustrati due usi di , uno che ha esito negativo in fase di DirectCastesecuzione e uno che ha 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 di q è Double.
CType ha esito positivo perché Double può essere convertito in Integer. Tuttavia, il primo DirectCast non riesce in fase di esecuzione perché il tipo di runtime di non ha alcuna relazione di Double ereditarietà con Integer, anche se esiste una conversione. Il secondo DirectCast ha esito positivo perché converte da tipo Form a tipo Control, da cui Form eredita.