Share via


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

CType-Funktion

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

TryCast

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

Referenz

Convert.ChangeType