Funktionen für die Typkonvertierung (Visual Basic)
Diese Funktionen werden inline kompiliert. Dies bedeutet, dass der Konvertierungscode Bestandteil des Codes für die Auswertung des Ausdrucks ist.Manchmal gibt es keinen Aufruf einer Prozedur zum Durchführen der Konvertierung. Das erhöht die Leistung.Jede Funktion erzwingt für einen Ausdruck einen bestimmten Datentyp.
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)
Bestandteil
- expression
Erforderlich.Beliebiger Ausdruck des Quelldatentyps.
Datentyp des Rückgabewerts
Der Funktionsname bestimmt den Datentyp des von der Funktion zurückgegebenen Werts wie in der folgenden Tabelle gezeigt.
Funktionsname |
Rückgabedatentyp |
Bereich für das expression-Argument |
---|---|---|
CBool |
Ein beliebiger gültiger Char-Ausdruck, String-Ausdruck oder numerischer Ausdruck. |
|
CByte |
0 (null) bis 255 (ohne Vorzeichen); Nachkommastellen werden gerundet.1 |
|
CChar |
Jeder gültige Char-Ausdruck oder String-Ausdruck; nur das erste Zeichen von String wird konvertiert; Wert kann 0 (null) bis 65535 (ohne Vorzeichen) sein. |
|
CDate |
Eine beliebige gültige Darstellung eines Datums und einer Uhrzeit. |
|
CDbl |
-1,79769313486231570E+308 bis -4,94065645841246544E–324 für negative Werte; 4,94065645841246544E–324 bis 1,79769313486231570E+308 für positive Werte. |
|
CDec |
+/–79.228.162.514.264.337.593.543.950.335 für skalierte ganze Zahlen, d. h. Zahlen ohne Dezimalstellen.Für Zahlen mit 28 Dezimalstellen ist der gültige Bereich +/-7,9228162514264337593543950335.Die kleinste mögliche Zahl ungleich 0 (null) ist 0,0000000000000000000000000001 (+/-1E-28). |
|
CInt |
-2.147.483.648 bis 2.147.483.647; Nachkommastellen werden gerundet.1 |
|
CLng |
-9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807; Nachkommastellen werden gerundet.1 |
|
CObj |
Jeder gültige Ausdruck. |
|
CSByte |
-128 bis 127; Nachkommastellen werden gerundet.1 |
|
CShort |
-32.768 bis 32.767; Nachkommastellen werden gerundet.1 |
|
CSng |
–3,402823E+38 bis –1,401298E–45 für negative Werte; 1,401298E–45 bis 3,402823E+38 für positive Werte. |
|
CStr |
Die Rückgabe für CStr hängt vom expression-Argument ab.Weitere Informationen finden Sie unter Rückgabewerte für die CStr-Funktion (Visual Basic). |
|
CUInt |
0 (null) bis 4.294.967.295 (ohne Vorzeichen); Nachkommastellen werden gerundet.1 |
|
CULng |
0 (null) bis 18.446.744.073.709.551.615 (ohne Vorzeichen); Nachkommastellen werden gerundet.1 |
|
CUShort |
0 (null) bis 65.535 (ohne Vorzeichen); Nachkommastellen werden gerundet.1 |
1 Nachkommastellen können der unverzerrten Rundung (Banker's Rounding) unterliegen, einem besonderen Rundungstyp.Weitere Informationen finden Sie unter "Hinweise".
Hinweise
Grundsätzlich sollten Sie die Typkonvertierungsfunktionen von Visual Basic den .NET Framework-Methoden wie ToString() entweder für die Convert-Klasse oder eine individuelle Typstruktur oder -klasse vorziehen.Die Visual Basic-Funktionen sind auf eine optimale Interaktion mit Visual Basic-Code ausgerichtet. Außerdem wird Ihr Quellcode dadurch kürzer und besser lesbar.Darüber hinaus erzeugen die .NET Framework-Konvertierungsmethoden nicht immer die gleichen Ergebnisse wie die Visual Basic-Funktionen. Dies ist z. B. bei der Konvertierung von Boolean in Integer der Fall.Weitere Informationen finden Sie unter Problembehandlung bei Datentypen (Visual Basic).
Verhalten
Konvertierung. Die Funktionen zum Konvertieren von Datentypen können dazu verwendet werden, das Ergebnis einer Operation in einen bestimmten Datentyp anstatt in den Standarddatentyp umzuwandeln.Mit CDec können Sie beispielsweise Berechnungen explizit im Dezimalformat durchführen, bei denen normalerweise ganzzahlige Werte oder Werte mit einfacher oder doppelter Genauigkeit verwendet würden.
Fehlgeschlagene Konvertierungen. Wenn das an die Funktion weitergegebene expression-Argument außerhalb des Bereichs des Datentyps liegt, in den es konvertiert werden soll, tritt eine OverflowException auf.
Nachkommastellen. Wenn Sie einen Wert, der keine ganze Zahl ist, in einen ganzzahligen Typ konvertieren, entfernen die Funktionen zum Konvertieren von ganzen Zahlen (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng und CUShort) den Teil mit den Dezimalstellen. Der Wert wird dann auf die nächste ganze Zahl gerundet.
Wenn der Teil mit den Dezimalstellen genau 0,5 ist, runden die Funktionen zum Konvertieren von ganzen Zahlen den Wert auf die nächste gerade ganze Zahl.Beispielsweise wird 0,5 auf 0 gerundet, und 1,5 und 2,5 werden beide auf 2 gerundet.Dies wird manchmal als unverzerrte Rundung (Banker's Rounding) bezeichnet. Ziel dieser Rundungsmethode ist es, die Abweichung zu kompensieren, die sich beim Addieren vieler solcher Zahlen aufbauen könnte.
CInt und CLng unterscheiden sich von den Funktionen Int und Fix, die den Teil mit den Dezimalstellen einer Zahl abschneiden und nicht runden.Außerdem entspricht der Rückgabetyp von Fix und Int immer dem Typ des an sie übergebenen Werts.
Konvertierung von Datum/Zeit. Verwenden Sie die IsDate-Funktion, um festzustellen, ob ein Wert in ein Datum und eine Uhrzeit konvertiert werden kann.CDate erkennt Datumsliterale und Uhrzeitliterale, aber keine numerischen Werte.Um einen Date-Wert von Visual Basic 6.0 in einen Date-Wert unter Visual Basic 2005 oder höher zu konvertieren, können Sie die DateTime.FromOADate-Methode verwenden.
Neutrale Datums-/Zeitwerte. Der Date-Datentyp (Visual Basic) enthält immer sowohl Datums- als auch Zeitinformationen.Für die Typkonvertierung verwendet Visual Basic 1/1/0001 (1. Januar des Jahres 1) als neutralen Wert für das Datum und 00:00:00 (Mitternacht) als neutralen Wert für die Uhrzeit.Wenn ein Date-Wert in eine Zeichenfolge umgewandelt wird, nimmt CStr in die resultierende Zeichenfolge keine neutralen Werte auf.Wenn beispielsweise #January 1, 0001 9:30:00# in eine Zeichenfolge umgewandelt wird, lautet das Ergebnis "9:30:00 AM"; die Datumsinformationen werden unterdrückt.Die Datumsangaben sind aber weiterhin im Date-Wert enthalten und können mit Funktionen wie der DatePart-Funktion wiederhergestellt werden.
Berücksichtigung der Kultur. Die Typkonvertierungsfunktionen, die Zeichenfolgen betreffen, führen Konvertierungen auf der Grundlage der aktuellen Kultureinstellungen für die Anwendung aus.CDate z. B. erkennt Datumsformate gemäß den im System festgelegten Gebietsschemaeinstellungen.Sie müssen Tag, Monat und Jahr für das Gebietsschema in der richtigen Reihenfolge angeben, sonst wird das Datum nicht richtig interpretiert.Außerdem wird ein langes Datumsformat nicht erkannt, wenn es auch eine Zeichenfolge für den Wochentag, wie "Mittwoch" enthält.
Wenn Sie in eine oder aus einer Zeichenfolgendarstellung eines Werts in ein anderes Format als das von Ihrem Gebietsschema angegebene Format konvertieren müssen, können Sie die Typkonvertierungsfunktionen von Visual Basic nicht verwenden.Verwenden Sie in diesem Fall die ToString(IFormatProvider)-Methode und die Parse(String, IFormatProvider)-Methode für den Typ dieses Werts.Verwenden Sie z. B. Double.Parse, wenn Sie eine Zeichenfolge in Double konvertieren, und Double.ToString, wenn Sie einen Wert vom Typ Double in eine Zeichenfolge konvertieren.
CType-Funktion
Die CType-Funktion nimmt ein zweites Argument (typename) an und wandelt expression in typename um. Dabei kann typename ein beliebiger Datentyp oder eine beliebige Struktur, Klasse oder Schnittstelle sein, für die es eine gültige Konvertierung gibt.
Einen Vergleich von CType mit den anderen Typkonvertierungsschlüsselwörtern finden Sie unter DirectCast-Operator (Visual Basic) und TryCast-Operator (Visual Basic).
Beispiel für CBool
In diesem Beispiel wird die CBool-Funktion dazu verwendet, Ausdrücke in Boolean-Werte zu konvertieren.Wenn ein Ausdruck einen Wert ungleich 0 (null) ergibt, gibt CBool den Wert True zurück; andernfalls wird False zurückgegeben.
Dim a, b, c As Integer
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)
Beispiel für CByte
Im folgenden Beispiel wird die CByte-Funktion dazu verwendet, einen Ausdruck in Byte zu konvertieren.
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
Beispiel für CChar
Im folgenden Beispiel wird die CChar-Funktion dazu verwendet, das erste Zeichen eines String-Ausdrucks in einen Char-Typ zu konvertieren.
Dim aString As String
Dim aChar As Char
' CChar converts only the first character of the string.
aString = "BCD"
' The following line of code sets aChar to "B".
aChar = CChar(aString)
Das Eingabeargument für CChar muss dem Datentyp Char oder String angehören.CChar kann nicht dazu verwendet werden, eine Zahl in ein Zeichen zu konvertieren, da CChar einen numerischen Datentyp nicht akzeptieren kann.Im folgenden Beispiel wird eine Zahl abgerufen, die einen Codepunkt (Zeichencode) repräsentiert und anschließend in das entsprechende Zeichen konvertiert.Dabei wird die InputBox-Funktion verwendet, um die Zeichenfolge von Ziffern zu erhalten; CInt wird eingesetzt, um die Zeichenfolge in den Typ Integer zu konvertieren, und ChrW, um die Zahl in den Typ Char zu konvertieren.
Dim someDigits As String
Dim codePoint As Integer
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)
Beispiel für CDate
Im folgenden Beispiel wird die CDate-Funktion dazu verwendet, Zeichenfolgen in Date-Werte zu konvertieren.Im Allgemeinen wird davon abgeraten, Datums- und Zeitangaben fest als Zeichenfolgen zu programmieren (siehe Beispiel).Verwenden Sie stattdessen Datums- und Zeitliterale, wie #Feb 12, 1969# und #4:45:23 PM#.
Dim aDateString, aTimeString As String
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM"
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)
Beispiel für CDbl
Dim aDec As Decimal
Dim aDbl As Double
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)
Beispiel für CDec
Im folgenden Beispiel wird die CDec-Funktion dazu verwendet, einen numerischen Wert in Decimal zu konvertieren.
Dim aDouble As Double
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)
Beispiel für CInt
Im folgenden Beispiel wird die CInt-Funktion dazu verwendet, einen Wert in Integer zu konvertieren.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
Beispiel für CLng
Im folgenden Beispiel wird die CLng-Funktion dazu verwendet, Werte in Long zu konvertieren.
Dim aDbl1, aDbl2 As Double
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)
Beispiel für CObj
Im folgenden Beispiel wird die CObj-Funktion dazu verwendet, einen numerischen Wert in Object zu konvertieren.Die Object-Variable selbst enthält nur einen 4-Byte-Zeiger, der auf den ihm zugewiesenen Double-Wert zeigt.
Dim aDouble As Double
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)
CSByte-Beispiel
Im folgenden Beispiel wird die CSByte-Funktion dazu verwendet, einen numerischen Wert in SByte zu konvertieren.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
Beispiel für CShort
Im folgenden Beispiel wird die CShort-Funktion dazu verwendet, einen numerischen Wert in Short zu konvertieren.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
Beispiel für CSng
Im folgenden Beispiel wird die CSng-Funktion dazu verwendet, Werte in Single zu konvertieren.
Dim aDouble1, aDouble2 As Double
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)
Beispiel für CStr
Im folgenden Beispiel wird die CStr-Funktion dazu verwendet, einen numerischen Wert in String zu konvertieren.
Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)
Im folgenden Beispiel wird die CStr-Funktion dazu verwendet, Date-Werte in String-Werte zu konvertieren.
Dim aDate As Date
Dim aString As String
' The following line of code generates a COMPILER ERROR because of invalid format.
' aDate = #February 12, 1969 00:00:00#
' Date literals must be in the format #m/d/yyyy# or they are invalid.
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00.
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value.
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)
CStr stellt einen Date-Wert immer im standardmäßigen Kurzformat für das aktuelle Gebietsschema dar, z. B. "6/15/2003 4:35:47 PM".CStr unterdrückt jedoch die neutralen Werte von 1/1/0001 für das Datum und 00:00:00 für die Zeit.
Weitere Informationen über die Werte, die von CStr zurückgegeben werden, finden Sie unter Rückgabewerte für die CStr-Funktion (Visual Basic).
CUInt-Beispiel
Im folgenden Beispiel wird die CUInt-Funktion dazu verwendet, einen numerischen Wert in UInteger zu konvertieren.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
CULng-Beispiel
Im folgenden Beispiel wird die CULng-Funktion dazu verwendet, einen numerischen Wert in ULong zu konvertieren.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
CUShort-Beispiel
Im folgenden Beispiel wird die CUShort-Funktion dazu verwendet, einen numerischen Wert in UShort zu konvertieren.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)
Siehe auch
Referenz
Konvertierungsfunktionen (Visual Basic)