Funktionen für die Typkonvertierung (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 zu erreichen, wodurch die Leistung verbessert wird. Jede Funktion koerziert einen Ausdruck auf 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. Jeder Ausdruck des Quelldatentyps.

Rückgabewert-Datentyp

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 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-Beispiel ".
CChar Char-Datentyp Ein beliebiger gültiger Char oder String Ausdruck; nur das erste Zeichen eines String konvertierten Zeichens; 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.9406564584124654E-324 für negative Werte; 4.9406564584124654E-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 lautet der Bereich +/-7,9228162514264375935439393939393950335. Die kleinste mögliche Nicht-Nullnummer ist 0.00000000000000000000000000001 (+/-1E-28).
CInt Ganzzahliger 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 von Gleitkomma- und 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 Gleitkommakonvertierung auf 64-Bit-Ganzzahlkonvertierung mit der CLng Funktion. Weitere Informationen finden Sie im Abschnitt "Hinweise". Ein Beispiel finden Sie im Abschnitt "CInt-Beispiel ".
CObj Object Data Type 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 die signierte Bytekonvertierung 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 Gleitkommakonvertierung auf 16-Bit-Ganzzahlkonvertierung 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 Zeichenfolgendatentyp Gibt zurück, um CStr von dem expression Argument abhängig zu sein. 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-Beispiel ".
CULng ULong-Datentyp UInt64.MinValue (0) bis UInt64.MaxValue (18.446.744.073.709.551.615) (nicht signiert); Bruchteile werden abgerundet. 1

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung der Gleitkommakonvertierung auf nicht signierte ganzzahlige Konvertierung 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) (nicht signiert); Bruchteile werden gerundet. 1

Ab Visual Basic 15.8 optimiert Visual Basic die Leistung des Gleitkommapunkts auf nicht signierte 16-Bit-Ganzzahlkonvertierung 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 bezeichnet wird. Weitere Informationen finden Sie unter "Hinweise".

Bemerkungen

In der Regel sollten Sie die Visual Basic Typkonvertierungsfunktionen vor den .NET Framework Methoden verwenden, zToString(). 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 ausgelegt, und sie erleichtern auch das Lesen des Quellcodes. Darüber hinaus erzeugen die .NET Framework Konvertierungsmethoden nicht immer dieselben Ergebnisse wie die Visual Basic Funktionen, z. B. beim Konvertieren Boolean in Integer. Weitere Informationen finden Sie unter Problembehandlung für Datentypen.

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

Diese Optimierung ermöglicht Code, der eine große Anzahl von ganzzahligen Konvertierungen ausführt, bis zu doppelt so schnell ausgeführt werden kann. Im folgenden Beispiel werden diese optimierten Gleitkomma-zu-ganzzahligen 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 auf einen bestimmten Datentyp anstelle des Standarddatentyps zu koerieren. Verwenden Sie z. B. die Verwendung CDec , um dezimale Arithmetik in Fällen zu erzwingen, in denen single-precision, double-precision oder integer arithmetisch normalerweise stattfinden würde.

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

  • Bruchteile. Wenn Sie einen nicht integrierten Wert in einen integralen Typ konvertieren, entfernen die Ganzzahlkonvertierungsfunktionen (CByte, , CInt, CShortCSByteCUIntCLngCULngund CUShort) den Bruchteil und runden den Wert auf die nächstgelegene ganze Zahl.

    Wenn der Bruchteil genau 0,5 ist, runden die Ganzzahlkonvertierungsfunktionen auf die nächste sogar ganze Zahl. Beispielsweise rundet 0,5 auf 0 und 1,5 und 2,5 auf 2. Dies wird manchmal als Runden des Bankers bezeichnet, und sein Zweck besteht darin, eine Verzerrung zu kompensieren, die beim Hinzufügen vieler solcher Zahlen zusammen gesammelt werden kann.

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

  • 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. Um einen Visual Basic 6.0-Wert Date in einen Date Wert in Visual Basic 2005 oder höher zu konvertieren, können Sie die DateTime.FromOADate Methode verwenden.

  • Neutrale Datums-/Uhrzeitwerte. Der Datentyp "Datum " enthält immer Datums- und Uhrzeitinformationen. Für Die Artkonvertierung betrachtet Visual Basic 1/1/0001 (1. Januar des Jahres 1) einen neutralen Wert für das Datum und 00:00:00 (Mitternacht) als neutralen Wert für die Zeit. Wenn Sie einen Wert in eine Date Zeichenfolge konvertieren, CStr werden keine neutralen Werte in die resultierende Zeichenfolge eingeschlossen. 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 Funktion DatePart wiederhergestellt werden.

  • Kulturempfindlichkeit. Die Typkonvertierungsfunktionen mit Zeichenfolgen führen Konvertierungen basierend auf den aktuellen Kultureinstellungen für die Anwendung aus. Erkennt beispielsweise 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 ordnungsgemäß interpretiert. Ein langes Datumsformat wird nicht erkannt, wenn es eine Tag-der-Woche-Zeichenfolge enthält, z. B. "Mittwoch".

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

CType Function

Die CType-Funktion verwendet ein zweites Argument, und die Coerces typenameexpression zu , wobei typename es sich um einen beliebigen Datentyp, eine Struktur, eine Klasse oder eine Schnittstelle handeln kann, typenamefür die eine gültige Konvertierung vorhanden ist.

Einen Vergleich CType mit den anderen Typkonvertierungsstichwörtern finden Sie unter DirectCast Operator und TryCast Operator.

CBool-Beispiel

Im folgenden Beispiel wird die CBool Funktion zum Konvertieren von Ausdrücken in Boolean Werte verwendet. Wenn ein Ausdruck auf einen nichtzero-Wert ausgewertet wird, CBool gibt Truesie zurück; andernfalls wird es 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 ByteAusdruck 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)

CChar-Beispiel

Im folgenden Beispiel wird die CChar Funktion verwendet, um 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 CChar muss vom Datentyp Char oder Stringvom Typ sein. Sie können keine Zahl in ein Zeichen konvertieren, da CChar kein numerischer Datentyp akzeptiert werden kannCChar. Das folgende Beispiel ruft eine Zahl ab, die einen Codepunkt (Zeichencode) darstellt und in das entsprechende Zeichen konvertiert. Es verwendet die InputBox Funktion, um die Zeichenfolge von Ziffern abzurufen, CInt um die Zeichenfolge in den Typ Integerzu konvertieren und ChrW die Zahl in den 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 Date Werte zu konvertieren. Im Allgemeinen wird die Hartcodierung von Datums- und Uhrzeitangaben als Zeichenfolgen (wie in diesem Beispiel dargestellt) nicht empfohlen. Verwenden Sie Datums literale und Zeit literale, z. B. #Feb 12, 1969# und #4:45:23 PM#, stattdessen.

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 Longzu 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 Object. Die Object Variable selbst enthält nur einen Vier-Byte-Zeiger, 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 Singlezu 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 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 Werte zu String konvertierenDate.

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 Standardshortformat für das aktuelle Gebietsschema, 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 Details zu den von ihnen zurückgegebenen CStrWerten 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)

Weitere Informationen