CType-Funktion (Visual Basic)
Gibt das Ergebnis einer expliziten Konvertierung eines Ausdrucks in einen angegebenen Datentyp, ein Objekt, eine Struktur, Klasse oder Schnittstelle zurück.
Syntax
CType(expression, typename)
Bestandteile
expression
ist ein beliebiger gültiger Ausdruck. Wenn der Wert von expression
außerhalb des von typename
definierten Bereichs liegt, wird von Visual Basic eine Ausnahme ausgelöst.
typename
Ein beliebiger Ausdruck, der innerhalb einer As
-Klausel in einer Dim
-Anweisung zulässig ist, d. h., der Name eines beliebigen Datentyps, eines Objekts, einer Struktur, einer Klasse oder einer Schnittstelle.
Bemerkungen
Tipp
Sie können die folgenden Funktionen auch zum Ausführen einer Typkonvertierung verwenden:
- Typkonvertierungsfunktionen, wie
CByte
,CDbl
undCInt
, mit denen eine Konvertierung in einen bestimmten Datentyp ausgeführt werden kann. Weitere Informationen finden Sie unter Funktionen für die Typkonvertierung. - DirectCast-Operator oder TryCast-Operator. Diese Operatoren erfordern, dass ein Typ von dem Anderen erbt oder diesen implementiert. Sie können etwas bessere Leistung beim Konvertieren in und aus dem
CType
-Datentyp bieten, alsObject
.
CType
wird inline kompiliert. Das bedeutet, dass der Konvertierungscode Bestandteil des Codes für die Auswertung des Ausdrucks ist. In einigen Fällen wird der Code schneller ausgeführt, da keine Prozeduren zum Ausführen der Konvertierung aufgerufen werden.
Wenn keine Konvertierung von expression
in typename
(zum Beispiel von Integer
in Date
) definiert ist, wird von Visual Basic zur Kompilierungszeit eine Fehlermeldung angezeigt.
Falls eine Konvertierung zur Laufzeit fehlschlägt, wird die entsprechende Ausnahme ausgelöst. Ist eine einschränkende Konvertierung fehlerhaft, wird meist ein OverflowException-Fehler verursacht. Wenn die Konvertierung nicht definiert ist, wird eine InvalidCastException ausgelöst. Dies kann z. B. der Fall sein, wenn expression
vom Typ Object
ist und für seinen Laufzeittyp keine Konvertierung in typename
definiert ist.
Handelt es sich beim Datentyp von expression
oder typename
um eine von Ihnen definierte Klasse oder Struktur, können Sie CType
für diese Klasse oder Struktur als Konvertierungsoperator definieren. Dadurch verhält sich CType
wie ein überladener Operator. Wenn Sie einen Konvertierungsoperator definieren, können Sie nicht nur das Verhalten von Konvertierungen in und aus der Klasse oder Struktur steuern, sondern auch die ausgelösten Ausnahmen bestimmen.
Konvertierungsschlüsselwörter
Ein Vergleich der Schlüsselwörter für die Typkonvertierung sieht wie folgt aus.
Schlüsselwort | Datentypen | Argumentbeziehung | Laufzeitfehler |
---|---|---|---|
CType |
Beliebige Datentypen | Die erweiternde oder einschränkende Konvertierung muss zwischen den beiden Datentypen definiert werden | Löst InvalidCastException aus |
DirectCast-Operator | Beliebige Datentypen | Ein Typ muss vom anderen Typ erben oder implementieren | Löst InvalidCastException aus |
TryCast | Nur Verweistypen | Ein Typ muss vom anderen Typ erben oder implementieren | Gibt Nothing zurück |
Überladen
Der Operator CType
kann auch für eine Klasse oder Struktur überladen werden, die außerhalb des Codes definiert ist. Wenn in dem Code Konvertierungen in eine solche Klasse oder Struktur oder in umgekehrter Richtung durchführt werden, müssen Sie sicherstellen, dass Sie das Verhalten des betreffenden CType
-Operators verstehen. Weitere Informationen finden Sie unter Operator Procedures.
Konvertieren von dynamischen Objekten
Typkonvertierungen für dynamische Objekte werden durch benutzerdefinierte dynamische Konvertierungen ausgeführt, bei denen die TryConvert-Methode oder die BindConvert-Methode verwendet werden. Wenn Sie mit dynamischen Objekten arbeiten, verwenden Sie zum Konvertieren des dynamischen Objekts die CTypeDynamic-Methode.
Beispiel
In diesem Beispiel wird die CType
-Funktion zum Konvertieren eines Ausdrucks in den Single
-Datentyp verwendet.
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
Weitere Beispiele finden Sie unter Implizite und explizite Konvertierungen.