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.
Eine implizite Konvertierung erfordert keine spezielle Syntax im Quellcode. Im folgenden Beispiel konvertiert Visual Basic implizit den Wert von k
in einen Gleitkommawert mit einfacher Genauigkeit, bevor er q
zugewiesen wird.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
Eine explizite Konvertierung verwendet ein Typkonvertierungsstichwort. Visual Basic stellt mehrere dieser Schlüsselwörter bereit, die einen Ausdruck in Klammern zum gewünschten Datentyp zusammenfassen. Diese Schlüsselwörter funktionieren wie Funktionen, aber der Compiler generiert den Code inline, sodass die Ausführung etwas schneller ist als bei einem Funktionsaufruf.
In der Erweiterung des vorhergehenden Beispiels konvertiert das Schlüsselwort CInt
den Wert von q
zurück in eine ganze Zahl, bevor er k
zugewiesen wird.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Schlüsselwörter für Konversionen
In der folgenden Tabelle sind die verfügbaren Konvertierungstichwörter aufgeführt.
Schlüsselwort für die Typkonvertierung | Konvertiert einen Ausdruck in den Datentyp. | Zulässige Datentypen von Ausdrücken, die konvertiert werden sollen |
---|---|---|
CBool |
Boolescher Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte und Aufzählungstypen), String , Object |
CByte |
Byte-Datentyp | Beliebiger numerischer Typ (einschließlich SByte und Aufzählungstypen), Boolean , String Object |
CChar |
Char-Datentyp | String , Object |
CDate |
Datumsdatentyp | String , Object |
CDbl |
Double-Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CDec |
Dezimaler Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CInt |
Integer-Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CLng |
Long-Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CObj |
Objektdatentyp | Beliebiger Typ |
CSByte |
SByte-Datentyp | Beliebiger numerischer Typ (einschließlich Byte und Aufzählungstypen), Boolean , String Object |
CShort |
Kurzer Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CSng |
Einzelner Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CStr |
String-Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte und Enumerationstypen), Boolean , Char , Char -Array, Date , Object |
CType |
Typ, der nach dem Komma (, ) angegeben ist |
Beim Konvertieren in einen elementaren Datentyp (einschließlich eines Arrays eines elementaren Typs) sind dieselben Typen wie für das entsprechende Konvertierungsstichwort zulässig. Beim Konvertieren in einen zusammengesetzten Datentyp werden die von ihm implementierten Schnittstellen und die Klassen, von denen er erbt, berücksichtigt. Beim Konvertieren in eine Klasse oder Struktur, für die Sie CType überladen haben, gilt diese Klasse oder Struktur. |
CUInt |
UInteger-DatenTyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CULng |
ULong-Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
CUShort |
UShort-Datentyp | Beliebiger numerischer Typ (einschließlich Byte , SByte , und Aufzählungstypen), Boolean , String , Object |
Die CType-Funktion
Die CType-Funktion arbeitet mit zwei Argumenten. Der erste ist der zu konvertierende Ausdruck, und der zweite ist der Zieldatentyp oder die Objektklasse. Beachten Sie, dass das erste Argument ein Ausdruck und kein Typ sein muss.
CType
ist eine Inlinefunktion, d. h. der kompilierte Code macht die Konvertierung, häufig ohne Funktionsaufruf zu generieren. Dadurch wird die Leistung verbessert.
Vergleichen Sie CType
mit den anderen Typkonvertierungskeywords unter DirectCast-Operator und TryCast-Operator.
Elementare Typen
Im folgenden Beispiel wird die Verwendung von CType
veranschaulicht.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Zusammengesetzte Typen
Sie können die CType
-Funktion verwenden, um Werte sowohl in zusammengesetzte Datentypen als auch in Elementartypen zu konvertieren. Sie können sie auch verwenden, um eine Objektklasse in den Typ einer seiner Schnittstellen zu überstellen, wie im folgenden Beispiel gezeigt.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Arraytypen
CType
kann auch Arraydatentypen konvertieren, wie im folgenden Beispiel gezeigt.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
Weitere Informationen und ein Beispiel finden Sie unter Arraykonvertierungen.
Typen, die CType definieren
Sie können CType
in einer von Ihnen definierte Klasse oder Struktur festlegen. Auf diese Weise können Sie Werte in und aus dem Typ Ihrer Klasse oder Struktur konvertieren. Weitere Informationen und ein Beispiel finden Sie unter How to: Define a Conversion Operator.
Hinweis
Werte, die mit einem Konvertierungsstichwort verwendet werden, müssen für den Zieldatentyp gültig sein, oder ein Fehler tritt auf. Wenn Sie z. B. versuchen, einen Long
Wert in einen Integer
zu konvertieren, muss der Wert des Werts Long
innerhalb des gültigen Bereichs für den Integer
Datentyp liegen.
Vorsicht
Die Angabe CType
zur Konvertierung von einem Klassentyp in einen anderen schlägt zur Laufzeit fehl, wenn der Quelltyp nicht vom Zieltyp abgeleitet wird. Ein solcher Fehler löst eine InvalidCastException Ausnahme aus.
Wenn es sich bei einem der Typen jedoch um eine Struktur oder Klasse handelt, die Sie definiert haben und wenn Sie diese Struktur oder Klasse definiert CType
haben, kann eine Konvertierung erfolgreich sein, wenn sie die Anforderungen Ihrer CType
Klasse erfüllt. Siehe Vorgehensweise: Definieren eines Konvertierungsoperators.
Das Ausführen einer expliziten Konvertierung wird auch als Umwandlung eines Ausdrucks in einen bestimmten Datentyp oder eine objektklasse bezeichnet.