Típuskonvertálási függvények (Visual Basic)

Ezek a függvények beágyazottan vannak lefordítva, ami azt jelenti, hogy a konverziós kód a kifejezést kiértékelő kód része. Néha nincs olyan eljárás, amely a teljesítményt javító átalakítást hajtja végre. Minden függvény egy adott adattípushoz kényszeríti a kifejezést.

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)

Része

expression
Szükséges. A forrásadattípus bármely kifejezése.

Visszaadott érték adattípusa

A függvény neve határozza meg a visszaadott érték adattípusát az alábbi táblázatban látható módon.

Függvénynév Adattípus visszaadva expression Argumentumtartomány
CBool Logikai adattípus Bármely érvényes Char vagy String numerikus kifejezés.
CByte Bájt adattípus Byte.MinValue (0) ( Byte.MaxValue 255) (aláíratlan); törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos és bájtos konverzió teljesítményét a CByte függvénysel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CChar Karakter adattípusa Bármely érvényes Char vagy String kifejezés; csak az String első karakter lesz konvertálva; az érték 0 és 65535 között lehet (aláíratlan).
CDate Dátum adattípusa Dátum és idő érvényes ábrázolása.
CDbl Dupla adattípus -1.79769313486231570E+308–-4.94065645841246544E-324 negatív értékek esetén; 4.94065645841246544E-324-1,79769313486231570E+308 pozitív értékek esetén.
CDec Decimális adattípus +/-79.228.162.514.264.337.593.543.950.335 nulla skálázott számokhoz, azaz tizedesjegy nélküli számokhoz. A 28 tizedesjegyet tartalmazó számok esetében a tartomány +/-7,9228162514264337593543950335. A legkisebb lehetséges nem nulla szám 0,000000000000000000000000001 (+/-1E-28).
CInt Egész szám adattípusa Int32.MinValue (-2 147 483 648) és (2 147 483 647) között Int32.MaxValue ; a törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdődően a Visual Basic optimalizálja a lebegőpontos és egész számok konvertálásának teljesítményét a CInt függvénnyel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CLng Hosszú adattípus Int64.MinValue (-9 223 372 036 854 775 808) és Int64.MaxValue (9 223 372 036 854 775 807); törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos és a 64 bites egész szám konvertálásának teljesítményét a CLng függvénnyel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CObj Objektum adattípusa Bármilyen érvényes kifejezés.
CSByte SByte adattípus SByte.MinValue (-128) és (127) között SByte.MaxValue ; a törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos bájtkonvertálás teljesítményét a CSByte függvénnyel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CShort Rövid adattípus Int16.MinValue (-32 768) és (32 767) között Int16.MaxValue ; a törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos és a 16 bites egész szám konvertálásának teljesítményét a CShort függvénnyel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CSng Egyetlen adattípus -3.402823E+38–-1.401298E-45 negatív értékek esetén; Pozitív értékek esetén 1,401298E-45–3,402823E+38.
CStr Sztring adattípusa Az argumentumtól függő expression értéket CStr ad vissza. Lásd a CStr függvény visszatérési értékeit.
CUInt UInteger adattípus UInt32.MinValue (0) át UInt32.MaxValue (4 294 967 295) (aláíratlan); törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos és az előjel nélküli egész szám konvertálásának teljesítményét a CUInt függvénnyel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CULng ULong-adattípus UInt64.MinValue (0) át UInt64.MaxValue (18 446 744 073 709 551 615) (aláíratlan); törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos és a hosszú egész számok nem aláírt konvertálásának teljesítményét a CULng függvénysel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.
CUShort UShort-adattípus UInt16.MinValue (0) a (65 535) (aláíratlan) között UInt16.MaxValue ; a törtrészek kerekítve vannak.1

A Visual Basic 15.8-tól kezdve a Visual Basic optimalizálja a lebegőpontos 16 bites egész számok nem aláírt konvertálásának teljesítményét a CUShort függvénysel. További információt a Megjegyzések szakaszban talál. Egy példaért tekintse meg a CInt-példa szakaszt.

1 A törtrészek speciális kerekítési típusnak lehetnek alávetve, amelyet bankerek kerekítésének neveznek. További információt a "Megjegyzések" című témakörben talál.

Megjegyzések

Általában a Visual Basic típuskonvertálási függvényeket kell használnia az olyan .NET-keretrendszer metódusok előnyben részesítése érdekében, mint például ToString()az osztályon vagy egy Convert egyéni típusstruktúrán vagy osztályon. A Visual Basic-függvények a Visual Basic-kód optimális interakciójához lettek kialakítva, és rövidebbé és könnyebben olvashatóvá teszik a forráskódot. Emellett a .NET-keretrendszer konvertálási metódusok nem mindig ugyanazokat az eredményeket eredményezik, mint a Visual Basic függvények, például a konvertáláskor BooleanInteger. További információ: Adattípusok hibaelhárítása.

A Visual Basic 15.8-tól kezdődően a lebegőpontos-egész szám konvertálásának teljesítménye akkor lesz optimalizálva, ha a következő metódusok által visszaadott vagy Double visszaadott értéket az egyik egész számkonvertálási függvénynek adja át Single (CByte, CShort, , CInt, CLng, CUShortCSByte, ): CUIntCULng

Ez az optimalizálás lehetővé teszi, hogy a nagy számú egész szám konvertálását lehetővé tevő kód akár kétszer olyan gyorsan fusson. Az alábbi példa ezeket az optimalizált lebegőpontos-egész szám konverziókat szemlélteti:

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

Működés

  • Kényszer. Általában az adattípus-átalakítási függvényekkel kényszerítheti a művelet eredményét egy adott adattípusra az alapértelmezett adattípus helyett. Például a decimális aritmetika kényszerítésére olyan esetekben, CDec amikor az egyszeres pontosságú, a dupla pontosságú vagy az egész számtani érték általában végbe megy.

  • Sikertelen konverziók. Ha a expression függvénynek átadott érték kívül esik azon adattípus tartományán, amelybe konvertálni szeretné, OverflowException a függvény bekövetkezik.

  • Törtrészek. Ha nemintegráns értéket alakít át egy integráltípusra, az egész szám konvertálási függvényei (CByte, , CInt, CLng, CSByte, CShort, CUInt, CULng) eltávolítják a törtrészt, és CUShortaz értéket a legközelebbi egész számra kerekíti.

    Ha a törtrész pontosan 0,5, akkor az egész szám konverziós függvénye kerekíti azt a legközelebbi páros egész számra. Például a 0,5 kerekítése 0, az 1,5 és a 2,5 pedig 2. Ezt néha bankos kerekítésnek is nevezik, és célja egy olyan torzítás kompenzálása, amely sok ilyen szám összeadásakor halmozódhat fel.

    CInt és CLng különbözik a IntFix függvényektől, amelyek kerekítés helyett a szám törtrészét csonkálják. FixInt Emellett mindig ugyanazt az adattípust adja vissza, mint a beadáskor.

  • Dátum-/időkonvertálások. A függvény segítségével IsDate megállapíthatja, hogy egy érték konvertálható-e dátummá és idővé. CDate Dátumkonstansokat és időkonstansokat ismer fel, numerikus értékeket nem. A Visual Basic 6.0-érték DateDate Visual Basic 2005-ös vagy újabb verzióiban való értékké alakításához használhatja a metódust DateTime.FromOADate .

  • Semleges dátum-/időértékek. A Dátum adattípus mindig dátum- és időadatokat tartalmaz. Típuskonvertálás céljából a Visual Basic az 1.0001.01. (1. év január 1.) -et a dátum semleges értékének , a 00:00:00 (éjfél) pedig az időpont semleges értékének tekinti. Ha egy értéket sztringgé Date alakít át, CStr nem tartalmaz semleges értékeket az eredményül kapott sztringben. Ha például sztringgé konvertálja #January 1, 0001 9:30:00# , az eredmény "9:30:00"; a dátumadatok el lesznek tiltva. A dátumadatok azonban továbbra is megtalálhatók az eredeti Date értékben, és helyreállíthatók olyan függvényekkel, mint a DatePart függvény.

  • Kulturális érzékenység. A sztringeket tartalmazó típuskonvertálási függvények az alkalmazás aktuális kulturális beállításai alapján hajtanak végre átalakításokat. Például felismeri a CDate dátumformátumokat a rendszer területi beállításának megfelelően. A napot, a hónapot és az évet a területi beállításoknak megfelelő sorrendben kell megadnia, vagy előfordulhat, hogy a dátum nem megfelelően van értelmezve. A hosszú dátumformátum nem ismerhető fel, ha egy hét napja sztringet tartalmaz, például a "Szerda" karakterláncot.

    Ha a területi beállítás által megadotttól eltérő formátumban kell átalakítania egy érték sztring-ábrázolását, akkor nem használhatja a Visual Basic típusú konverziós függvényeket. Ehhez használja az ToString(IFormatProvider) érték típusának és Parse(String, IFormatProvider) metódusainak metódusait. Például sztringek Double.Parse sztringgé Doublealakításakor, illetve Double.ToString típusértékek Double sztringgé alakításakor.

CType függvény

A CType függvény egy második argumentumot vesz fel, typenameés arra expressiontypenamekényszeríti, ahol typename bármilyen adattípus, struktúra, osztály vagy interfész lehet, amelyhez érvényes átalakítás tartozik.

A többi típuskonvertálási kulcsszavak összehasonlítását CType lásd : DirectCast Operátor és TryCast Operátor.

Példa a CBool-ra

Az alábbi példa a függvény használatával konvertálja a CBool kifejezéseket értékekké Boolean . Ha egy kifejezés kiértékelése nemero értékű, CBool akkor a visszaadott Trueérték ; ellenkező esetben a függvény ad vissza 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)

Példa cbyte-ra

Az alábbi példa a függvényt használja egy CByte kifejezés Bytekonvertálásához.

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

Példa ccharra

Az alábbi példa a függvényt használja egy CChar kifejezés első karakterének String típussá alakításához Char .

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)

A bemeneti argumentumnak CChar adattípusúnak Char vagy String. A számokat nem CChar lehet karakterzé alakítani, mert CChar numerikus adattípus nem fogadható el. Az alábbi példa beolvas egy kódpontot (karakterkódot) képviselő számot, és átalakítja a megfelelő karakterre. A függvény a InputBox számjegyek sztringjének lekérésére, CInt a sztring típussá Integeralakítására és ChrW a szám típussá Charalakítására használja.

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)

Példa a CDate-ra

Az alábbi példa a függvény használatával konvertálja a CDate sztringeket értékekké Date . A dátumok és időpontok sztringként való kódolása általában nem javasolt (a példában látható módon). Használjon dátumkonstansokat és időkonstansokat, például #Feb 12, 1969# és #4:45:23#.

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-példa

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-példa

Az alábbi példa a függvényt használja egy CDec numerikus érték konvertálásához 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-példa

Az alábbi példa a függvényt használja egy CInt érték konvertálásához 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-példa

Az alábbi példa a függvény használatával CLng konvertálja az értékeket 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)

Példa CObj-ra

Az alábbi példa a függvényt használja egy CObj numerikus érték konvertálásához Object. Maga a Object változó csak négy bájtos mutatót tartalmaz, amely a Double hozzá rendelt értékre mutat.

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-példa

Az alábbi példa a függvényt használja egy CSByte numerikus érték konvertálásához 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-példa

Az alábbi példa a függvényt használja egy CShort numerikus érték konvertálásához Short.

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

CSng-példa

Az alábbi példa a függvény használatával CSng konvertálja az értékeket 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)

Példa CStr-ra

Az alábbi példa a függvényt használja egy CStr numerikus érték konvertálásához 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)

Az alábbi példa az értékek értékké alakításához Date használja a CStr függvénytString.

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 Mindig az aktuális területi beállítás szokásos rövid formátumában jeleníti meg Date az értéket, például:"2003.06.15. 16:35:47". CStr Az 1/1/0001 semleges értékeit azonban letiltja a dátum és a 00:00:00 időpont esetében.

A visszaadott CStrértékekről további információt a CStr függvény értékeinek visszaadása című témakörben talál.

CUInt példa

Az alábbi példa a függvényt használja egy CUInt numerikus érték konvertálásához 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 példa

Az alábbi példa a függvényt használja egy CULng numerikus érték konvertálásához 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-példa

Az alábbi példa a függvényt használja egy CUShort numerikus érték konvertálásához UShort.

Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)

Lásd még