DirectCast-Operator (Visual Basic)
Leitet eine Typkonvertierungsoperation ein, die auf Vererbung oder Implementierung beruht.
Hinweise
DirectCast führt Konvertierungen nicht mithilfe der Hilfsfunktionen der Visual Basic-Laufzeitbibliothek durch und zeigt daher bei Konvertierungen in und aus dem Object-Datentyp etwas besseres Leistungsverhalten als CType.
Das DirectCast-Schlüsselwort wird auf die gleiche Weise verwendet wie die CType-Funktion (Visual Basic) und das TryCast-Operator (Visual Basic)-Schlüsselwort. Als erstes Argument ist ein Ausdruck anzugeben und als zweites Argument ein Typ, in den dieser Ausdruck konvertiert werden soll. DirectCast erfordert eine Vererbungs- oder Implementierungsbeziehung zwischen den Datentypen der beiden Argumente. Dies bedeutet, dass ein Typ von dem anderen erben bzw. ein Typ den anderen implementieren muss.
Fehler
DirectCast generiert einen Compilerfehler, wenn erkannt wird, dass keine Vererbungs- oder Implementierungsbeziehung vorhanden ist. Das Ausbleiben eines Compilerfehlers ist jedoch keine Garantie für eine erfolgreiche Konvertierung. Wenn die gewünschte Konvertierung eingrenzend ist, kann sie zur Laufzeit fehlschlagen. Wenn dies passiert, löst die Laufzeitumgebung einen InvalidCastException-Fehler aus.
Konvertierungsschlüsselwörter
Im Folgenden werden die Typkonvertierungsschlüsselwörter miteinander verglichen.
Schlüsselwort |
Datentypen |
Argumentbeziehung |
Laufzeitfehler |
Beliebige Datentypen |
Zwischen den beiden Datentypen muss eine erweiternde oder eingrenzende Konvertierung definiert werden. |
Löst InvalidCastException aus. |
|
DirectCast |
Beliebige Datentypen |
Ein Datentyp muss von dem anderen Datentyp erben oder den anderen Datentyp implementieren. |
Löst InvalidCastException aus. |
Nur Verweise auf Typen |
Ein Datentyp muss von dem anderen Datentyp erben oder den anderen Datentyp implementieren. |
Gibt Nothing (Visual Basic) zurück. |
Beispiel
Im folgenden Beispiel wird DirectCast zweimal verwendet; einmal scheitert die Konvertierung zur Laufzeit und im anderen Fall wird sie erfolgreich ausgeführt.
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)
Im vorangehenden Beispiel hat q zur Laufzeit den Typ Double. CType wird erfolgreich ausgeführt, da Double in Integer konvertiert werden kann. Der erste Aufruf von DirectCast schlägt fehl, weil zwischen dem Laufzeittyp Double und Integer keine Vererbungsbeziehung besteht, auch wenn eine Konvertierung möglich ist. Der zweite Aufruf von DirectCast ist erfolgreich, da vom Typ Form in den Typ Control, der von Form erbt, konvertiert wird.