Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tyto funkce jsou zkompilovány v textu, což znamená, že kód převodu je součástí kódu, který výraz vyhodnocuje. Někdy neexistuje volání procedury k provedení převodu, což zlepšuje výkon. Každá funkce převede výraz na konkrétní datový typ.
Syntaxe
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)
Část
expression
Povinné. Libovolný výraz zdrojového datového typu.
Datový typ návratové hodnoty
Název funkce určuje datový typ hodnoty, kterou vrátí, jak je znázorněno v následující tabulce.
| Název funkce | Návratový datový typ | Rozsah argumentu expression |
|---|---|---|
CBool |
Logický datový typ | Libovolný platný Char nebo String číselný výraz |
CByte |
Datový typ Bajt |
Byte.MinValue (0) až Byte.MaxValue (255) (bez znaménka), desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon převodu s plovoucí desetinou čárkou na bajt pomocí CByte funkce. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
CChar |
Datový typ Char | Jakýkoli platný Char nebo String výraz; převede se pouze první znak; String hodnota může být 0 až 65535 (bez znaménka). |
CDate |
Datumový datový typ | Jakékoli platné vyjádření data a času. |
CDbl |
Datový typ Double | -1,79769313486231570E+308 až -4,94065645841246544E-324 pro záporné hodnoty; 4.94065645841246544E-324 až 1,79769313486231570E+308 pro kladné hodnoty. |
CDec |
Datový typ Decimal | +/-79 228 162 514 264 337 593 543 950 335 pro čísla bez desetinných míst. Pro čísla s 28 desetinnými místy je rozsah +/-7,9228162514264337593543950335. Nejmenší možné nenulové číslo je 0,000000000000000000000000000001 (+/-1E-28). |
CInt |
Datový typ Integer |
Int32.MinValue (-2 147 483 648) až Int32.MaxValue (2 147 483 647); desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon převodu s plovoucí desetinou čárkou na celočíselnou konverzi pomocí CInt funkce. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
CLng |
Dlouhý datový typ |
Int64.MinValue (-9 223 372 036 854 775 808) až Int64.MaxValue (9 223 372 036 854 775 807); zlomkové části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon převodu s plovoucí desetinou čárkou na 64bitové celé číslo pomocí CLng funkce. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
CObj |
datový typ objektu | Libovolný platný výraz. |
CSByte |
Datový typ SByte |
SByte.MinValue (-128) až SByte.MaxValue (127); desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon převodu bajtů s plovoucí desetinou čárkou pomocí CSByte funkce. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
CShort |
Krátký datový typ |
Int16.MinValue (-32 768) až Int16.MaxValue (32 767); desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon 16bitového celočíselného převodu CShort na 16bitové celé číslo. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
CSng |
Datový typ Single | -3,402823E+38 až -1,401298E-45 pro záporné hodnoty; 1.401298E-45 až 3,402823E+38 pro kladné hodnoty. |
CStr |
Datový typ String | Vrátí pro CStr závislosti na argumentu expression . Viz návratové hodnoty pro funkci CStr. |
CUInt |
Datový typ UInteger |
UInt32.MinValue (0) až UInt32.MaxValue (4 294 967 295) (bez znaménka), desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon převodu celého čísla s plovoucí desetinou čárkou na bez znaménka pomocí CUInt funkce. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
CULng |
Datový typ ULong |
UInt64.MinValue (0) až UInt64.MaxValue (18 446 744 073 709 551 615) (bez znaménka), desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 Visual Basic optimalizuje výkon dlouhého celočíselného převodu CULng bez znaménka na nepodepsané celé číslo. Další informace najdete v části Poznámky. Příklad najdete v části CInt Example . |
CUShort |
Datový typ UShort |
UInt16.MinValue (0) až UInt16.MaxValue (65 535) (bez znaménka), desetinné části jsou zaokrouhleny.1 Počínaje jazykem Visual Basic 15.8 visual Basic optimalizuje výkon plovoucí desetiny na bez znaménka 16bitového celočíselného převodu CUShort pomocí funkce. Další informace najdete v části Poznámky . Příklad najdete v části CInt Example . |
1 Zlomkové části mohou být předmětem speciálního typu zaokrouhlování nazývaného zaokrouhlování bankovního subjektu. Další informace najdete v části Poznámky.
Poznámky
Obecně platí, že byste měli použít funkce převodu typů jazyka Visual Basic v předvolbě k metodám rozhraní .NET Framework, jako ToString()je například , buď ve Convert třídě, nebo v samostatné struktuře typu nebo třídě. Funkce jazyka Visual Basic jsou navržené pro optimální interakci s kódem jazyka Visual Basic a také usnadňují čtení zdrojového kódu. Kromě toho metody převodu rozhraní .NET Framework ne vždy produkují stejné výsledky jako funkce jazyka Visual Basic, například při převodu Boolean na Integer. Další informace najdete v tématu Řešení potíží s datovými typy.
Počínaje jazykem Visual Basic 15.8 je výkon převodu čísla s plovoucí deseti čárkou na celé číslo optimalizovaný, když předáte Single hodnotu nebo Double hodnotu vrácenou následujícími metodami do některé z celočíselné převodní funkce (CByte, CShortCIntCLngCSByte, CUShort, , CUInt), ): CULng
- 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)
Tato optimalizace umožňuje kód, který provede velký počet celočíselových převodů tak, aby běžel až dvakrát rychleji. Následující příklad znázorňuje tyto optimalizované převody s plovoucí deseti čárkou na celé číslo:
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
Chování
Donucení. Obecně platí, že pomocí funkcí převodu datových typů můžete výsledek operace převést na konkrétní datový typ, nikoli na výchozí datový typ. Můžete například použít
CDeck vynucení aritmetické aritmetiky desetinných míst v případech, kdy se obvykle provádí aritmetika s jednoduchou přesností, dvojitou přesností nebo celočíselnou aritmetikou.Neúspěšné převody
expressionPokud je předaný funkci mimo rozsah datového typu, na který se má převést, OverflowException nastane.Zlomkové části. Při převodu neintegrační hodnoty na celočíselný typ odebere funkce převodu celých čísel (
CByte,CIntCLng,CSByte,CShort,CUInt,CULngaCUShort) desetinnou část a zaokrouhlí hodnotu na nejbližší celé číslo.Pokud je desetinná část přesně 0,5, funkce převodu celých čísel ho zaokrouhlí na nejbližší sudé celé číslo. Například 0,5 zaokrouhlí na 0 a 1,5 a 2,5 zaokrouhlí na 2. Někdy se tomu říká zaokrouhlování bankerů a jeho účelem je kompenzovat předsudky, které by se mohly nashromáždit při sčítání mnoha takových čísel dohromady.
CIntaCLngliší se od IntFix funkcí, které zkracují místo zaokrouhlení zlomkové části čísla.FixTaké aIntvždy vrátit hodnotu stejného datového typu, který předáte.Převody data a času IsDate Pomocí funkce určete, jestli je možné hodnotu převést na datum a čas.
CDaterozpozná literály kalendářního data a časové literály, ale ne číselné hodnoty. Chcete-li převést hodnotu jazyka Visual Basic 6.0DatenaDatehodnotu v jazyce Visual Basic 2005 nebo novějších verzích, můžete použít metodu DateTime.FromOADate .Neutrální hodnoty data a času Datový typ Datum vždy obsahuje informace o datu i čase. Pro účely převodu typů visual Basic považuje hodnotu 1/1/0001 (1. ledna roku 1) za neutrální hodnotu pro datum a 00:00:00 (půlnoc) jako neutrální hodnota pro čas. Pokud převedete
Datehodnotu na řetězec,CStrneobsahuje do výsledného řetězce neutrální hodnoty. Pokud například převedete#January 1, 0001 9:30:00#na řetězec, výsledek je 9:30:00 AM; informace o datu se potlačí. Informace o datu se však stále nacházejí v původníDatehodnotě a lze je obnovit pomocí funkcí, jako DatePart je funkce.Citlivost kultury. Funkce převodu typů zahrnující řetězce provádějí převody na základě aktuálního nastavení jazykové verze aplikace. Rozpoznává například
CDateformáty kalendářních dat podle nastavení národního prostředí systému. Je nutné zadat den, měsíc a rok ve správném pořadí pro národní prostředí nebo datum nemusí být interpretováno správně. Formát dlouhého data se nerozpozná, pokud obsahuje řetězec dne v týdnu, například "Středa".Pokud potřebujete převést na řetězcovou reprezentaci hodnoty v jiném formátu, než je formát určený vaším národním prostředím, nemůžete použít funkce převodu typů jazyka Visual Basic. Chcete-li to provést, použijte
ToString(IFormatProvider)aParse(String, IFormatProvider)metody tohoto typu hodnoty. Můžete například použít Double.Parse při převodu řetězce naDoubleřetězec a použít Double.ToString při převodu hodnoty typuDoublena řetězec.
CType – operátor
CType Operator přebírá druhý argument , typenamea převody expression na typename, kde typename může být libovolný datový typ, struktura, třída nebo rozhraní, na které existuje platný převod.
Pro porovnání CType s jinými klíčovými slovy pro převod typů viz Operátor DirectCast a Operátor TryCast.
Příklad CBool
Následující příklad používá funkci k převodu CBool výrazů na Boolean hodnoty. Pokud se výraz vyhodnotí jako nenulová hodnota, CBool vrátí Truehodnotu ; v opačném případě vrátí 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říklad CByte
Následující příklad používá CByte funkci k převodu výrazu na .Byte
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
Příklad CChar
Následující příklad používá CChar funkci k převodu prvního znaku String výrazu Char na typ.
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)
Vstupní argument CChar musí být datový typ Char nebo String. Číslo nelze převést CChar na znak, protože CChar nelze přijmout číselný datový typ. Následující příklad získá číslo představující bod kódu (kód znaku) a převede ho na odpovídající znak. Používá InputBox funkci k získání řetězce číslic, CInt k převodu řetězce na typ Integera ChrW k převodu čísla na typ 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)
Příklad CDate
Následující příklad používá funkci k převodu CDate řetězců na Date hodnoty. Obecně se nedoporučuje pevně kódovat data a časy jako řetězce (jak je znázorněno v tomto příkladu). Používejte literály kalendářních dat a časové literály, například #Feb 12, 1969# a #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)
Příklad 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)
Příklad CDec
Následující příklad používá CDec funkci k převodu číselné hodnoty na 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)
Příklad CInt
Následující příklad používá CInt funkci k převodu hodnoty na Integer.
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
Příklad CLng
Následující příklad používá CLng funkci k převodu hodnot na 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říklad CObj
Následující příklad používá CObj funkci k převodu číselné hodnoty na Object. Samotná Object proměnná obsahuje pouze čtyřbajtů ukazatel, který odkazuje na hodnotu přiřazenou Double k ní.
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)
Příklad CSByte
Následující příklad používá CSByte funkci k převodu číselné hodnoty na SByte.
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
Příklad CShort
Následující příklad používá CShort funkci k převodu číselné hodnoty na Short.
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
Příklad CSng
Následující příklad používá CSng funkci k převodu hodnot na 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říklad CStr
Následující příklad používá CStr funkci k převodu číselné hodnoty na 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)
Následující příklad používá funkci k převodu CStrDate hodnot na String hodnoty.
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 vždy vykreslí Date hodnotu ve standardním krátkém formátu pro aktuální národní prostředí, například "15. 6. 2003 4:35:47 PM". Nicméně potlačí CStrneutrální hodnoty 1/1/0001 pro datum a 00:00:00 pro čas.
Další podrobnosti o hodnotách vrácených CStrfunkcí naleznete v tématu Návratové hodnoty pro funkci CStr.
Příklad CUInt
Následující příklad používá CUInt funkci k převodu číselné hodnoty na UInteger.
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
Příklad CULng
Následující příklad používá CULng funkci k převodu číselné hodnoty na ULong.
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
Příklad CUShort
Následující příklad používá CUShort funkci k převodu číselné hodnoty na UShort.
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)