Typeconversiefuncties (Visual Basic)
Deze functies worden inline gecompileerd, wat betekent dat de conversiecode deel uitmaakt van de code die de expressie evalueert. Soms is er geen aanroep van een procedure om de conversie uit te voeren, waardoor de prestaties worden verbeterd. Elke functie coërt een expressie naar een specifiek gegevenstype.
Syntaxis
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)
Onderdeel
expression
Vereist. Elke expressie van het brongegevenstype.
Gegevenstype Retourwaarde
De functienaam bepaalt het gegevenstype van de waarde die wordt geretourneerd, zoals wordt weergegeven in de volgende tabel.
Functienaam | Gegevenstype retourneren | Bereik voor expression argument |
---|---|---|
CBool |
Booleaanse gegevenstype | Elke geldige of String numerieke Char expressie. |
CByte |
Bytegegevenstype | Byte.MinValue (0) tot en met Byte.MaxValue (255) (niet-ondertekend); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van drijvendekommage-byteconversie met de CByte functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CChar |
Gegevenstype teken | Elke geldige Char of String expressie; alleen het eerste teken van een String wordt geconverteerd; de waarde kan 0 tot en met 65535 (niet-ondertekend) zijn. |
CDate |
Datumgegevenstype | Een geldige weergave van een datum en tijd. |
CDbl |
Dubbel gegevenstype | -1.79769313486231570E+308 tot en met -4,9406564584124654E-324 voor negatieve waarden; 4.9406564584124654E-324 tot en met 1.79769313486231570E+308 voor positieve waarden. |
CDec |
Decimaal gegevenstype | +/-79.228.162.514.264.337.593.543.950.335 voor getallen zonder decimalen. Voor getallen met 28 decimalen is het bereik +/-7,9228162514264337593543950335. Het kleinste mogelijke niet-nul getal is 0,000000000000000000000000000001 (+/-1E-28). |
CInt |
Gegevenstype geheel getal | Int32.MinValue (-2.147.483.648) tot Int32.MaxValue en met (2.147.483.647); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van de conversie van drijvende komma naar geheel getal met de CInt functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CLng |
Lang gegevenstype | Int64.MinValue (-9.223.372.036.854.775.808) tot Int64.MaxValue en met (9.223.372.036.854.775.807); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van de conversie van drijvende komma tot 64-bits gehele getallen met de CLng functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CObj |
Objectgegevenstype | Elke geldige expressie. |
CSByte |
SByte-gegevenstype | SByte.MinValue (-128) tot en met SByte.MaxValue (127); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van de drijvendekomma om byteconversie met de CSByte functie te ondertekenen. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CShort |
Kort gegevenstype | Int16.MinValue (-32.768) tot en met Int16.MaxValue (32.767); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van de conversie van drijvende komma naar 16-bits gehele getallen met de CShort functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CSng |
Eén gegevenstype | -3.402823E+38 tot en met -1,401298E-45 voor negatieve waarden; 1.401298E-45 tot en met 3,402823E+38 voor positieve waarden. |
CStr |
Gegevenstype tekenreeks | Retourneert afhankelijk CStr van het expression argument. Zie Retourwaarden voor de CStr-functie. |
CUInt |
UInteger-gegevenstype | UInt32.MinValue (0) tot en met UInt32.MaxValue (4.294.967.295) (niet-ondertekend); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van zwevende komma tot niet-ondertekende gehele getallenconversie met de CUInt functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CULng |
ULong-gegevenstype | UInt64.MinValue (0) tot en met UInt64.MaxValue (18.446.744.073.709.551.615) (niet-ondertekend); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van zwevende komma tot niet-ondertekende lange gehele getallenconversie met de CULng functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
CUShort |
UShort-gegevenstype | UInt16.MinValue (0) tot en met UInt16.MaxValue (65.535) (niet-ondertekend); breukdelen worden afgerond.1 Vanaf Visual Basic 15.8 optimaliseert Visual Basic de prestaties van drijvende komma tot niet-ondertekende 16-bits conversie van gehele getallen met de CUShort functie. Zie de sectie Opmerkingen voor meer informatie. Zie de sectie CInt-voorbeeld voor een voorbeeld. |
1 Breukdelen kunnen worden onderworpen aan een speciaal type afronding, de afronding van bankiers genoemd. Zie 'Opmerkingen' voor meer informatie.
Opmerkingen
In de regel moet u de conversiefuncties van het Type Visual Basic in voorkeur gebruiken voor de .NET Framework-methoden, zoals ToString()
, in de Convert klasse of op een afzonderlijke typestructuur of klasse. De Visual Basic-functies zijn ontworpen voor optimale interactie met Visual Basic-code en maken uw broncode ook korter en gemakkelijker te lezen. Bovendien produceren de .NET Framework-conversiemethoden niet altijd dezelfde resultaten als de Visual Basic-functies, bijvoorbeeld bij het converteren Boolean
naar Integer
. Zie Problemen met gegevenstypen oplossen voor meer informatie.
Vanaf Visual Basic 15.8 worden de prestaties van conversie van drijvende komma-naar-geheel getal geoptimaliseerd wanneer u de Single of waarde die wordt geretourneerd door de volgende methoden doorgeeft aan een van de conversiefuncties voor gehele getallen (CByte
, , CInt
CShort
, CLng
, CSByte
, , CUShort
), CUInt
CULng
):Double
- Conversion.Fix(Double)
- Conversion.Fix(Object)
- Conversion.Fix(Single)
- Conversion.Int(Double)
- Conversion.Int(Object)
- Conversion.Int(Single)
- Math.Ceiling(Double)
- Math.Floor(Double)
- Math.Round(Double)
- Math.Truncate(Double)
Met deze optimalisatie kan code die een groot aantal gehele getallen conversies uitvoert tot twee keer zo snel worden uitgevoerd. In het volgende voorbeeld ziet u de volgende geoptimaliseerde conversies van drijvende komma-naar-gehele getallen:
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
Gedrag
Dwang. Over het algemeen kunt u de conversiefuncties van het gegevenstype gebruiken om het resultaat van een bewerking naar een bepaald gegevenstype te dwingen in plaats van het standaardgegevenstype. Gebruik bijvoorbeeld
CDec
om decimale rekenkundige bewerkingen af te dwingen in gevallen waarin rekenkundige berekeningen met één precisie, dubbele precisie of geheel getal normaal plaatsvinden.Mislukte conversies. Als de
expression
doorgegeven aan de functie buiten het bereik van het gegevenstype valt waarnaar deze moet worden geconverteerd, treedt er een OverflowException op.Breukdelen. Wanneer u een niet-integrale waarde converteert naar een integraal type, verwijderen de conversiefuncties voor gehele getallen (
CByte
,CInt
,CLng
CSByte
,CShort
, ,CUInt
,CUShort
enCULng
) het breukdeel en rondt u de waarde af op het dichtstbijzijnde gehele getal.Als het breukdeel precies 0,5 is, rondt de conversie van gehele getallen deze af op het dichtstbijzijnde even gehele getal. 0,5 rondt bijvoorbeeld af op 0 en 1,5 en 2,5 rondt af op 2. Dit wordt ook wel afronding van bankiers genoemd en het doel ervan is om te compenseren voor een vooroordelen die kunnen oplopen bij het optellen van veel dergelijke getallen.
CInt
enCLng
verschillen van de Int functies Fix , die het breukdeel van een getal afkappen in plaats van afronden.Fix
EnInt
retourneer altijd een waarde van hetzelfde gegevenstype als u doorgeeft.Datum-/tijdconversies. Gebruik de IsDate functie om te bepalen of een waarde kan worden geconverteerd naar een datum en tijd.
CDate
herkent letterlijke datums en tijd letterlijke waarden, maar niet numerieke waarden. Als u een Visual Basic 6.0-waardeDate
wilt converteren naar eenDate
waarde in Visual Basic 2005 of hoger, kunt u de DateTime.FromOADate methode gebruiken.Neutrale datum-/tijdwaarden. Het gegevenstype Datum bevat altijd zowel datum- als tijdgegevens. Visual Basic beschouwt 1-1-0001 (1 januari 1 van het jaar 1) als een neutrale waarde voor de datum en 00:00:00 (middernacht) als een neutrale waarde voor de tijd. Als u een
Date
waarde converteert naar een tekenreeks,CStr
bevat deze geen neutrale waarden in de resulterende tekenreeks. Als u bijvoorbeeld converteert#January 1, 0001 9:30:00#
naar een tekenreeks, is het resultaat '9:30:00 uur'; de datumgegevens worden onderdrukt. De datumgegevens zijn echter nog steeds aanwezig in de oorspronkelijkeDate
waarde en kunnen worden hersteld met functies zoals DatePart functie.Cultuurgevoeligheid. De typeconversiefuncties met tekenreeksen voeren conversies uit op basis van de huidige cultuurinstellingen voor de toepassing. Herkent bijvoorbeeld
CDate
datumnotaties op basis van de landinstellingen van uw systeem. U moet de dag, maand en het jaar opgeven in de juiste volgorde voor uw landinstelling, of de datum wordt mogelijk niet correct geïnterpreteerd. Een lange datumnotatie wordt niet herkend als deze een dag-van-de-weektekenreeks bevat, zoals 'woensdag'.Als u wilt converteren naar of van een tekenreeksweergave van een waarde in een andere notatie dan de waarde die is opgegeven door uw landinstelling, kunt u de conversiefuncties van het Type Visual Basic niet gebruiken. Hiervoor gebruikt u de
ToString(IFormatProvider)
enParse(String, IFormatProvider)
methoden van het type van die waarde. Gebruik bijvoorbeeld Double.Parse bij het converteren van een tekenreeks naar eenDouble
tekenreeks en bij Double.ToString het converteren van een waarde van het typeDouble
naar een tekenreeks.
CType, functie
De CType-functie gebruikt een tweede argument, typename
en coerces expression
naar typename
, waar typename
elk gegevenstype, elke structuur, klasse of interface kan zijn waaraan een geldige conversie bestaat.
Zie DirectCast Operator en TryCast Operator voor een vergelijking van CType
de andere typeconversietrefwoorden.
CBool-voorbeeld
In het volgende voorbeeld wordt de CBool
functie gebruikt om expressies te converteren naar Boolean
waarden. Als een expressie resulteert in een niet-nulwaarde, CBool
retourneert True
deze; anders wordt deze geretourneerd 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-voorbeeld
In het volgende voorbeeld wordt de CByte
functie gebruikt om een expressie te converteren naar een Byte
.
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
CChar-voorbeeld
In het volgende voorbeeld wordt de CChar
functie gebruikt om het eerste teken van een String
expressie te converteren naar een Char
type.
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)
Het invoerargument moet CChar
van het gegevenstype Char
of String
. U kunt een getal niet CChar
converteren naar een teken, omdat CChar
u geen numeriek gegevenstype kunt accepteren. In het volgende voorbeeld wordt een getal verkregen dat een codepunt (tekencode) vertegenwoordigt en converteert deze naar het bijbehorende teken. De functie gebruikt de InputBox functie om de tekenreeks van cijfers te verkrijgen, CInt
om de tekenreeks te converteren naar type Integer
en ChrW
om het getal te converteren naar type Char
.
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)
Voorbeeld van CDate
In het volgende voorbeeld wordt de CDate
functie gebruikt om tekenreeksen te converteren naar Date
waarden. Over het algemeen wordt het niet aanbevolen om datums en tijden hard te coderen als tekenreeksen (zoals in dit voorbeeld wordt weergegeven). Gebruik in plaats daarvan letterlijke waarden voor datums en tijd, zoals #Feb 12, 1969# en #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)
Voorbeeld van 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)
CDec-voorbeeld
In het volgende voorbeeld wordt de CDec
functie gebruikt om een numerieke waarde te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CInt
functie gebruikt om een waarde te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CLng
functie gebruikt om waarden te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CObj
functie gebruikt om een numerieke waarde te converteren naar Object
. De Object
variabele zelf bevat slechts een aanwijzer met vier bytes, die verwijst naar de Double
waarde die eraan is toegewezen.
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-voorbeeld
In het volgende voorbeeld wordt de CSByte
functie gebruikt om een numerieke waarde te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CShort
functie gebruikt om een numerieke waarde te converteren naar Short
.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
Voorbeeld van CSng
In het volgende voorbeeld wordt de CSng
functie gebruikt om waarden te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CStr
functie gebruikt om een numerieke waarde te converteren naar 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)
In het volgende voorbeeld wordt de CStr
functie gebruikt om waarden te converteren Date
naar String
waarden.
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
geeft altijd een Date
waarde weer in de standaard korte notatie voor de huidige landinstelling, bijvoorbeeld '15-6-2003 4:35:47 PM'. CStr
Onderdrukt echter de neutrale waarden van 1-1-0001 voor de datum en 00:00:00 voor de tijd.
Zie Return Values voor de CStr-functie voor meer informatie over de waarden die worden CStr
geretourneerd door.
CUInt-voorbeeld
In het volgende voorbeeld wordt de CUInt
functie gebruikt om een numerieke waarde te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CULng
functie gebruikt om een numerieke waarde te converteren naar 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-voorbeeld
In het volgende voorbeeld wordt de CUShort
functie gebruikt om een numerieke waarde te converteren naar UShort
.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)