DirectCast
Aktualisiert: November 2007
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 und das TryCast-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 vom anderen erben oder den anderen implementieren muss.
Fehler und Fehlschläge
DirectCast generiert einen Compilerfehler, wenn erkannt wird, dass keine Vererbungs- oder Implementierungsbeziehung vorhanden ist. Das Ausbleiben eines Compilerfehlers garantiert jedoch keine erfolgreiche Konvertierung. Wenn die gewünschte Konvertierung einschränkend ist, kann sie zur Laufzeit fehlschlagen. Wenn dies passiert, löst die Laufzeitumgebung einen InvalidCastException-Fehler aus.
Konvertierungsschlüsselwörter
Es folgt ein Vergleich der Typkonvertierungsschlüsselwörter.
Schlüsselwort |
Datentypen |
Argumentbeziehung |
Laufzeitfehler |
---|---|---|---|
Beliebige Datentypen |
Zwischen den beiden Datentypen muss eine erweiternde oder einschränkende Konvertierung definiert sein |
Löst einen InvalidCastException-Fehler aus |
|
DirectCast |
Beliebige Datentypen |
Ein Datentyp muss von dem anderen Datentyp erben oder den anderen Datentyp implementieren. |
Löst einen InvalidCastException-Fehler aus |
Nur Verweistypen |
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.
Siehe auch
Konzepte
Erweiternde und eingrenzende Konvertierungen
Implizite und explizite Konvertierungen