Freigeben über


Typkonvertierungsfunktionen (Visual Basic)

Diese Funktionen werden inline kompiliert, d. h. der Konvertierungscode ist Teil des Codes, der den Ausdruck auswertet. Manchmal gibt es keinen Aufruf an eine Prozedur, um die Konvertierung auszuführen, wodurch die Leistung verbessert wird. Jede Funktion wandelt einen Ausdruck in einen bestimmten Datentyp um.

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ückgabewert-Datentyp

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

Funktionsname Datentyp zurückgeben Bereich für expression Argument
CBool Boolescher Datentyp Ein beliebiger gültiger Char oder String numerischer Ausdruck.
CByte Byte-Datentyp Byte.MinValue (0) bis Byte.MaxValue (255) (nicht signiert); 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 Example ".
CChar Char-Datentyp Ein beliebiger gültiger Char oder String Ausdruck; nur das erste Zeichen eines String konvertiert wird; der Wert kann 0 bis 65535 (nicht signiert) sein.
CDate Datumsdatentyp Jede gültige Darstellung eines Datums und einer Uhrzeit.
CDbl Double-Datentyp -1,79769313486231570E+308 bis -4,94065645841246544E-324 für negative Werte; 4.9406564584124654E-324 bis 1,79769313486231570E+308 für positive Werte.
CDec Dezimaler 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 lautet der Bereich +/-7,9228162514264375935439503335. Die kleinste mögliche Nicht-Null-Zahl ist 0,000000000000000000000000001 (+/-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 Gleitkommakonvertierung in ganzzahlige Konvertierung mit der CInt Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".
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 Gleitkomma-Konvertierung auf 64-Bit-Ganzzahl mit der CLng Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".
CObj Objektdatentyp Ein beliebiger gültiger 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 Gleitkommakonvertierung auf signierte Byte mit der CSByte Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".
CShort Kurzer 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 Gleitkommakonvertierung in eine 16-Bit-Ganzzahlkonvertierung mit der CShort Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".
CSng Einzelner 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 Gibt zurück, für CStr die das expression Argument abhängt. Siehe Rückgabewerte für die CStr-Funktion.
CUInt UInteger-DatenTyp UInt32.MinValue (0) bis UInt32.MaxValue (4.294.967.295) (nicht signiert); Bruchteile werden gerundet.1

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Gleitkommakonvertierung auf nicht signierte ganzzahlige Konvertierung mit der CUInt Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".
CULng ULong-Datentyp UInt64.MinValue (0) bis UInt64.MaxValue (18.446.744.073.709.551.615) (nicht signiert); Bruchteile werden gerundet.1

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung von Gleitkommazahlen auf nicht signierte lange ganzzahlige Konvertierung mit der CULng Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".
CUShort UShort-Datentyp UInt16.MinValue (0) bis UInt16.MaxValue (65.535) (nicht signiert); Bruchteile werden gerundet.1

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung von Gleitkommastellen auf nicht signierte 16-Bit-Ganzzahlkonvertierung mit der CUShort Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise ". Ein Beispiel finden Sie im Abschnitt "CInt Example ".

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

Bemerkungen

In der Regel sollten Sie die Visual Basic-Typkonvertierungsfunktionen vor den .NET Framework-Methoden verwenden, z ToString(). B. 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 sie machen ihren Quellcode auch kürzer und einfacher zu lesen. Darüber hinaus erzeugen die .NET Framework-Konvertierungsmethoden nicht immer dieselben Ergebnisse wie die Visual Basic-Funktionen, z. B. beim Konvertieren in BooleanInteger. Weitere Informationen finden Sie unter "Problembehandlung bei Datentypen".

Ab Visual Basic 15.8 ist die Leistung der Gleitkomma-zu-Ganzzahl-Konvertierung optimiert, wenn Sie die SingleDouble von den folgenden Methoden zurückgegebenen Methoden an eine der ganzzahligen Konvertierungsfunktionen übergeben (CByte, , CShort, CInt, CLng, CSByte, CUShort, , CUInt): CULng

Diese Optimierung ermöglicht Code, der eine große Anzahl ganzzahliger Konvertierungen ausführt, bis zu doppelt so schnell ausgeführt wird. Im folgenden Beispiel werden diese optimierten Gleitkomma-zu-Ganzzahl-Konvertierungen veranschaulicht:

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 anstelle des Standarddatentyps zu konvertieren. Verwenden Sie z. B CDec . zum Erzwingen der Dezimalarithmetik in Fällen, in denen normalerweise Eine-Genauigkeit, Doppelpräzision oder ganzzahlige Arithmetik stattfindet.

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

  • Bruchteile. Wenn Sie einen nichtintegralen Wert in einen integralen Typ konvertieren, entfernen die Ganzzahlkonvertierungsfunktionen (CByte, CInt, , CLng, CSByteCShort, CUInt, CULngund CUShort) den Bruchteil und runden den Wert auf die nächste ganze Zahl.

    Wenn der Bruchteil genau 0,5 ist, runden die Ganzzahlkonvertierungsfunktionen sie auf die nächste gerade ganze Zahl. Beispielsweise rundet 0,5 auf 0 und 1,5 und 2,5 auf 2. Dies wird manchmal als Rounding des Bankers bezeichnet, und sein Zweck besteht darin, eine Verzerrung zu kompensieren, die sich beim Hinzufügen vieler solcher Zahlen ansammeln könnte.

    CInt und CLng unterscheiden sich von den Int Funktionen Fix , die den Bruchteil einer Zahl abschneiden und nicht runden. Geben Sie auch immer einen Wert desselben Datentyps zurück, FixInt den Sie übergeben haben.

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

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

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

    Wenn Sie in oder aus einer Zeichenfolgendarstellung eines Werts in einem anderen Format als dem von Ihrem Gebietsschema angegebenen konvertieren müssen, können Sie die Konvertierungsfunktionen des Visual Basic-Typs nicht verwenden. Verwenden Sie dazu die ToString(IFormatProvider) Methoden und Parse(String, IFormatProvider) Methoden des Typs dieses Werts. Verwenden Sie Double.Parse z. B. beim Konvertieren einer Zeichenfolge in eine DoubleZeichenfolge und beim Double.ToString Konvertieren eines Typwerts Double in eine Zeichenfolge.

CType-Operator

Der CType-Operator verwendet ein zweites Argument, typenameund es wird eine Koerzenz expression verwendet, typename wobei typenamees sich um einen beliebigen Datentyp, eine Struktur, eine Klasse oder eine Schnittstelle handeln kann, in die eine gültige Konvertierung vorhanden ist.

Vergleichen Sie CType mit den anderen Typkonvertierungskeywords unter DirectCast-Operator und TryCast-Operator.

CBool-Beispiel

Im folgenden Beispiel wird die CBool Funktion verwendet, um Ausdrücke in Boolean Werte zu konvertieren. Wenn ein Ausdruck einen Wert ungleich Null auswertet, CBool wird dieser zurückgegeben True; andernfalls wird er zurückgegeben False.

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 Byte.

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 verwendet, um das erste Zeichen eines Ausdrucks in einen StringChar 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 muss CChar vom Datentyp oder Charvom Datentyp String sein. Sie können eine Zahl nicht CChar in ein Zeichen konvertieren, da CChar kein numerischer Datentyp akzeptiert werden kann. Das folgende Beispiel ruft eine Zahl ab, die einen Codepunkt (Zeichencode) darstellt, und konvertiert sie in das entsprechende Zeichen. Sie verwendet die InputBox Funktion, um die Zeichenfolge der Ziffern abzurufen, CInt die Zeichenfolge in den Typ Integerzu konvertieren und ChrW die Zahl in Typ Charzu 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 CDate Funktion verwendet, um Zeichenfolgen in Werte zu Date konvertieren. Im Allgemeinen wird das Hartcodieren von Datums- und Uhrzeitangaben als Zeichenfolgen (wie in diesem Beispiel gezeigt) nicht empfohlen. Verwenden Sie stattdessen Datumsliterale und Uhrzeitliterale 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 Decimal.

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 Integer.

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 Long.

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 Object. Die Object Variable selbst enthält nur einen Vierbytezeiger, der auf den Double ihm zugewiesenen Wert verweist.

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 SByte.

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 Short.

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 Single.

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 String.

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 Werte in Date Werte zu konvertierenString.

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 Date Wert im standard kurzen Format für das aktuelle Gebietsschema, z. B. "15.06.2003 4:35:47". CStr Unterdrückt jedoch die neutralen Werte von 1/1/0001 für das Datum und 00:00:00 für die Uhrzeit.

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

CUInt-Beispiel

Im folgenden Beispiel wird die CUInt Funktion verwendet, um einen numerischen Wert in UInteger.

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 ULong.

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 UShort.

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