Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt einen Typkonvertierungsvorgang basierend auf vererbung oder Implementierung ein.
Bemerkungen
DirectCast verwendet nicht die Visual Basic-Laufzeithilfsroutinen für die Konvertierung, sodass sie eine etwas bessere Leistung bieten kann als CType beim Konvertieren in und vom Datentyp Object.
Sie verwenden das DirectCast Schlüsselwort ähnlich der Verwendung des CType-Operators und des TryCast-Operator-Schlüsselworts . Sie geben einen Ausdruck als erstes Argument und einen Typ an, in den er als zweites Argument konvertiert werden soll.
DirectCast erfordert eine Vererbungs- oder Implementierungsbeziehung zwischen den Datentypen der beiden Argumente. Dies bedeutet, dass ein Typ von dem anderen erben oder implementieren muss.
Fehler und Fehler
DirectCast generiert einen Compilerfehler, wenn erkannt wird, dass keine Vererbungs- oder Implementierungsbeziehung vorhanden ist. Das Fehlen eines Compilerfehlers garantiert jedoch keine erfolgreiche Konvertierung. Wenn die gewünschte Konvertierung eingeschränkt wird, kann sie zur Laufzeit fehlschlagen. In diesem Fall löst die Laufzeit einen InvalidCastException Fehler aus.
Schlüsselwörter für Konversionen
Ein Vergleich der Typkonvertierungsstichwörter lautet wie folgt.
| Schlüsselwort | Datentypen | Argumentbeziehung | Laufzeitfehler |
|---|---|---|---|
| CType-Operator | Alle Datentypen | Die Verbreiterung oder Verengungskonvertierung muss zwischen den beiden Datentypen definiert werden. | Wirft InvalidCastException |
DirectCast |
Alle Datentypen | Ein Typ muss von dem anderen Typ erben oder implementieren. | Wirft InvalidCastException |
| TryCast-Operator | Nur Referenztypen | Ein Typ muss von dem anderen Typ erben oder implementieren. | Gibt Nothing zurück. |
Beispiel
Das folgende Beispiel veranschaulicht zwei Verwendungen von DirectCast, einer, die zur Laufzeit fehlschlägt und eine, die erfolgreich ist.
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 vorherigen Beispiel lautet qder Laufzeittyp von Double .
CType erfolgreich, da Double sie in Integer. Der erste DirectCast Fehler zur Laufzeit schlägt jedoch fehl, da der Laufzeittyp Double keine Vererbungsbeziehung mit Integerhat, auch wenn eine Konvertierung vorhanden ist. Die zweite DirectCast ist erfolgreich, da sie vom Typ Form in den Typ Controlkonvertiert wird, von dem Form geerbt wird.