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 und CInt, 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, als Object.

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.

Siehe auch