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

CType-Funktion (Visual Basic)

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.

TryCast-Operator (Visual Basic)

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.

Siehe auch

Referenz

Convert.ChangeType

Konzepte

Erweiternde und eingrenzende Konvertierungen (Visual Basic)

Implizite und explizite Konvertierungen (Visual Basic)