Funktionen für die Typkonvertierung (Visual Basic)

Diese Funktionen werden inline kompiliert, was bedeutet, dass der Konvertierungscode Teil des Codes ist, der den Ausdruck auswertet. Manchmal wird keine Prozedur aufgerufen, um die Konvertierung durchzuführen, was die Leistung verbessert. Jede Funktion erziert einen Ausdruck in einen bestimmten Datentyp.

Syntax

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)

Teil

expression
Erforderlich. Ein beliebiger Ausdruck des Quelldatentyps.

Rückgabewertdatentyp

Der Funktionsname bestimmt den Datentyp des zurückgegebenen Werts, wie in der folgenden Tabelle dargestellt.

Funktionsname Rückgabedatentyp Bereich für expression Argument
CBool Boolean-Datentyp Ein gültiger Char String oder numerischer Ausdruck.
CByte Byte-Datentyp Byte.MinValue (0) bis Byte.MaxValue (255) (ohne Vorzeichen); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Gleitkomma-zu-Byte-Konvertierung mit der CByte Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CChar Char-Datentyp Jeder gültige Char - oder String -Ausdruck; nur das erste Zeichen eines String wird konvertiert. Der Wert kann 0 bis 65535 (ohne Vorzeichen) sein.
CDate Date-Datentyp Eine gültige Darstellung eines Datums und einer Uhrzeit.
CDbl Double-Datentyp -1.79769313486231570E+308 bis -4.94065645841246544E-324 für negative Werte; 4.94065645841246544E-324 bis 1.79769313486231570E+308 für positive Werte.
CDec Decimal-Datentyp +/-79.228.162.514.264.337.593.543.950.335 für nullskalierte Zahlen, d.h. Zahlen ohne Dezimalstellen. Bei Zahlen mit 28 Dezimalstellen ist der Bereich +/-7,92281625142643759354395033335. Die kleinste mögliche Zahl ungleich null ist 0,00000000000000000000000000000001 (+/-1E-28).
CInt Integer-Datentyp Int32.MinValue (-2.147.483.648) bis Int32.MaxValue (2.147.483.647); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Gleitkomma- in Ganzzahlkonvertierung mit der CInt -Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CLng Long-Datentyp Int64.MinValue (-9.223.372.036.854.775.808) bis Int64.MaxValue (9.223.372.036.854.775.807); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Konvertierung von Gleitkommazahlen in 64-Bit-Ganzzahlen mit der CLng -Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CObj Object Data Type Jeder gültige Ausdruck.
CSByte SByte-Datentyp SByte.MinValue (-128) bis SByte.MaxValue (127); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Konvertierung von Gleitkomma in Byte mit Vorzeichen mit der CSByte -Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CShort Short-Datentyp Int16.MinValue (-32.768) bis Int16.MaxValue (32.767); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Konvertierung von Gleitkommazahlen in 16-Bit-Ganzzahlen mit der CShort -Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CSng Single-Datentyp -3.402823E+38 bis -1.401298E-45 für negative Werte; 1.401298E-45 bis 3.402823E+38 für positive Werte.
CStr String-Datentyp Rückgaben für CStr hängen vom expression Argument ab. Weitere Informationen finden Sie unter Rückgabewerte für die CStr-Funktion.
CUInt UInteger-Datentyp UInt32.MinValue (0) bis UInt32.MaxValue (4.294.967.295) (ohne Vorzeichen); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Konvertierung von Gleitkommazahlen in ganzzahlige Zahlen ohne Vorzeichen mit der CUInt Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CULng ULong-Datentyp UInt64.MinValue (0) bis UInt64.MaxValue (18.446.744.073.709.551.615) (ohne Vorzeichen); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Gleitkommakonvertierung in eine lange Ganzzahl ohne Vorzeichen mit der CULng Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.
CUShort UShort-Datentyp UInt16.MinValue (0) bis UInt16.MaxValue (65.535) (ohne Vorzeichen); Bruchteile werden gerundet. 1.

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Konvertierung von Gleitkommazahlen in 16-Bit-Ganzzahlen ohne Vorzeichen mit der CUShort -Funktion. Weitere Informationen finden Sie im Abschnitt Hinweise. Ein Beispiel finden Sie im Abschnitt CInt-Beispiel.

1 Bruchteile können einem speziellen Rundungstyp unterliegen, der als Rundung des Bankers bezeichnet wird. Weitere Informationen finden Sie unter "Hinweise".

Bemerkungen

In der Regel sollten Sie die Visual Basic Typkonvertierungsfunktionen vor den .NET Framework Methoden wie ToString() verwenden, entweder für die Convert -Klasse oder für eine einzelne Typstruktur oder -klasse. Die Visual Basic-Funktionen sind für eine optimale Interaktion mit Visual Basic-Code konzipiert und machen ihren Quellcode zudem kürzer und einfacher zu lesen. Darüber hinaus erzeugen die .NET Framework Konvertierungsmethoden nicht immer die gleichen Ergebnisse wie die Visual Basic Funktionen, z. B. beim Konvertieren in Boolean Integer . Weitere Informationen finden Sie unter Problembehandlung bei Datentypen.

Ab Visual Basic 15.8 wird die Leistung der Gleitkomma-zu-Ganzzahl-Konvertierung optimiert, wenn Sie den Single von den folgenden Methoden zurückgegebenen Wert oder an eine der Double Ganzzahlkonvertierungsfunktionen ( , , , , , , , ) CByte CShort CInt CLng CSByte CUShort CUInt CULng übergeben:

Durch diese Optimierung kann Code, der eine große Anzahl von ganzzahligen Konvertierungen vorgibt, bis zu doppelt so schnell ausgeführt werden. Das folgende Beispiel veranschaulicht diese optimierten Gleitkomma-zu-Ganzzahl-Konvertierungen:

Dim s As Single = 173.7619
Dim d As Double = s

Dim i1 As Integer = CInt(Fix(s))               ' Result: 173
Dim b1 As Byte = CByte(Int(d))                 ' Result: 173
Dim s1 AS Short = CShort(Math.Truncate(s))     ' Result: 173
Dim i2 As Integer = CInt(Math.Ceiling(d))      ' Result: 174
Dim i3 As Integer = CInt(Math.Round(s))        ' Result: 174

Verhalten

  • Zwang. Im Allgemeinen können Sie die Datentypkonvertierungsfunktionen verwenden, um das Ergebnis eines Vorgangs in einen bestimmten Datentyp statt in den Standarddatentyp zu umwandeln. Verwenden Sie beispielsweise , um die CDec Dezimalarithmetik in Fällen zu erzwingen, in denen normalerweise arithmetische Vorgänge mit einfacher Genauigkeit, doppelter Genauigkeit oder ganzzahliger Arithmetik erfolgen würden.

  • Fehler bei Konvertierungen. Wenn die expression an die Funktion übergebene außerhalb des Bereichs des Datentyps liegt, in den sie konvertiert werden soll, tritt ein OverflowException auf.

  • Bruchteile. Wenn Sie einen nicht ganzzahligen Wert in einen ganzzahligen Typ konvertieren, entfernen die Ganzzahlkonvertierungsfunktionen ( CByte , , , , , , und ) den CInt Bruchteil und runden den Wert auf die nächste CLng ganze CSByte CShort CUInt CULng CUShort Zahl.

    Wenn der Bruchteil genau 0,5 ist, runden die Ganzzahlkonvertierungsfunktionen ihn auf die nächste gerade ganze Zahl ab. Beispielsweise wird 0,5 auf 0 und 1,5 und 2,5 auf 2 gerundet. Dies wird manchmal als Rundung von Bankern bezeichnet, und ihr Zweck besteht darin, eine Voreingenommenheit zu kompensieren, die sich beim Addieren vieler solcher Zahlen ansammeln kann.

    CInt und CLng unterscheiden sich von den - und Int Fix -Funktionen, die den Bruchteil einer Zahl abschneiden, anstatt zu runden. Außerdem Fix geben und immer einen Wert desselben Datentyps zurück, Int den Sie übergeben.

  • Datums-/Uhrzeitkonvertierungen. Verwenden Sie die IsDate -Funktion, um zu bestimmen, ob ein Wert in ein Datum und eine Uhrzeit konvertiert werden kann. CDate erkennt Datumsliterale und Zeitliterale, aber keine numerischen Werte. Sie können die -Methode verwenden, um einen Visual Basic 6.0-Wert Date in einen Wert in Visual Basic Date 2005 oder höher zu DateTime.FromOADate konvertieren.

  • Neutrale Datums-/Uhrzeitwerte. Der Date-Datentyp enthält immer sowohl Datums- als auch Uhrzeitinformationen. Für die Typkonvertierung betrachtet Visual Basic 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 Zeit. Wenn Sie einen Date Wert in eine Zeichenfolge konvertieren, schließt keine CStr neutralen Werte in die resultierende Zeichenfolge ein. Wenn Sie z. B. #January 1, 0001 9:30:00# in eine Zeichenfolge konvertieren, ist das Ergebnis "9:30:00 AM". Die Datumsinformationen werden unterdrückt. Die Datumsinformationen sind jedoch weiterhin im ursprünglichen Wert vorhanden Date und können mit Funktionen wie function wiederhergestellt DatePart werden.

  • Kulturempfindlichkeit. Die Typkonvertierungsfunktionen, die Zeichenfolgen enthalten, führen Konvertierungen basierend auf den aktuellen Kultureinstellungen für die Anwendung aus. Erkennt CDate z. B. Datumsformate gemäß der Locale-Einstellung Ihres Systems. Sie müssen Den Tag, Monat und Jahr in der richtigen Reihenfolge für Ihr Locale bereitstellen, da das Datum möglicherweise nicht richtig interpretiert wird. Ein langes Datumsformat wird nicht erkannt, wenn es eine Wochentagszeichenfolge enthält, z. B. "Mittwoch".

    Wenn Sie in eine oder aus einer Zeichenfolgendarstellung eines Werts in einem anderen Format als dem, das im -Locale angegeben ist, konvertieren müssen, können Sie die Visual Basic Typkonvertierungsfunktionen nicht verwenden. Verwenden Sie dazu die Methoden ToString(IFormatProvider) und des Typs dieses Parse(String, IFormatProvider) Werts. Verwenden Sie beispielsweise , wenn Sie eine Zeichenfolge in einen konvertieren, und verwenden Sie , wenn Sie einen Wert Double.Parse vom Typ in eine Double Double.ToString Double Zeichenfolge konvertieren.

CType Function

Die CType-Funktion verwendet ein zweites Argument, , und erzöhnt zu , wobei ein beliebiger Datentyp, jede Struktur, Klasse oder Schnittstelle sein kann, für den eine gültige Konvertierung typename vorhanden expression typename typename ist.

Einen Vergleich von mit CType den anderen Typkonvertierungsschlüsselwörtern finden Sie unter DirectCast-Operator und TryCast-Operator.

CBool-Beispiel

Im folgenden Beispiel wird die CBool -Funktion verwendet, um Ausdrücke in -Werte Boolean zu konvertieren. Wenn ein Ausdruck zu einem Wert ungleich 0 (null) ausgewertet wird, wird CBool True zurückgegeben. 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)

CByte-Beispiel

Im folgenden Beispiel wird die CByte -Funktion verwendet, um einen Ausdruck in einen zu Byte konvertieren.

Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)

CChar-Beispiel

Im folgenden Beispiel wird die CChar -Funktion verwendet, um das erste Zeichen eines Ausdrucks String in einen -Typ zu Char 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 vom Datentyp oder Char String sein. Sie können nicht CChar verwenden, um eine Zahl in ein Zeichen zu konvertieren, da CChar einen numerischen Datentyp nicht akzeptieren kann. Im folgenden Beispiel wird eine Zahl, die einen Codepunkt (Zeichencode) darstellt, in das entsprechende Zeichen konvertiert. Sie verwendet die -Funktion, um die Zeichenfolge von Ziffern zu erhalten, um die Zeichenfolge in den Typ zu konvertieren, und , um die Zahl InputBox in den Typ zu CInt Integer ChrW Char 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)

CDate-Beispiel

Im folgenden Beispiel wird die -Funktion CDate verwendet, um Zeichenfolgen in Werte Date zu konvertieren. Im Allgemeinen wird das hart codierende Codieren von Datums- und Zeitangaben als Zeichenfolgen (wie in diesem Beispiel gezeigt) nicht empfohlen. Verwenden Sie stattdessen Datumsliterale 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)

CDbl-Beispiel

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)

CDec-Beispiel

Im folgenden Beispiel wird die CDec -Funktion verwendet, um einen numerischen Wert in zu Decimal 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)

CInt-Beispiel

Im folgenden Beispiel wird die CInt -Funktion verwendet, um einen Wert in zu Integer konvertieren.

Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)

CLng-Beispiel

Im folgenden Beispiel wird die CLng -Funktion verwendet, um Werte in zu Long 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)

CObj-Beispiel

Im folgenden Beispiel wird die CObj -Funktion verwendet, um einen numerischen Wert in zu Object konvertieren. Die Object Variable selbst enthält nur einen Vier-Byte-Zeiger, der auf den ihr Double zugewiesenen 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 verwendet, um einen numerischen Wert in zu SByte konvertieren.

Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)

CShort-Beispiel

Im folgenden Beispiel wird die CShort -Funktion verwendet, um einen numerischen Wert in zu Short konvertieren.

Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)

CSng-Beispiel

Im folgenden Beispiel wird die CSng -Funktion verwendet, um Werte in zu Single 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)

CStr-Beispiel

Im folgenden Beispiel wird die CStr -Funktion verwendet, um einen numerischen Wert in zu String 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 verwendet, um Date Werte in -Werte String 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 rendert immer einen Wert im Standard-Kurzformat für das aktuelle Locale, z.B. Date "6/15/2003 4:35:47 PM". Unterdrückt CStr jedoch die neutralen Werte 1/1/0001 für das Datum und 00:00:00 für die Uhrzeit.

Weitere Informationen zu den von zurückgegebenen Werten finden Sie CStr unter Rückgabewerte für die CStr-Funktion.

CUInt-Beispiel

Im folgenden Beispiel wird die CUInt -Funktion verwendet, um einen numerischen Wert in zu UInteger 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 verwendet, um einen numerischen Wert in zu ULong 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 verwendet, um einen numerischen Wert in zu UShort 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