Delen via


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, , CIntCShort, CLng, CSByte, , CUShort), CUIntCULng):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, CLngCSByte, CShort, , CUInt, CUShorten CULng) 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 en CLng verschillen van de Int functies Fix , die het breukdeel van een getal afkappen in plaats van afronden. Fix En Int 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-waarde Date wilt converteren naar een Date 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 oorspronkelijke Date 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) en Parse(String, IFormatProvider) methoden van het type van die waarde. Gebruik bijvoorbeeld Double.Parse bij het converteren van een tekenreeks naar een Doubletekenreeks en bij Double.ToString het converteren van een waarde van het type Double naar een tekenreeks.

CType, functie

De CType-functie gebruikt een tweede argument, typenameen 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 Truedeze; 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 Integeren 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 CStrgeretourneerd 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)

Zie ook