Visual Basic 语言参考
类型转换函数
这些函数采用内联方式编译,即转换代码是计算表达式的代码的一部分。有时实现该转换时不需要调用某个过程,这将提高性能。每个函数都将表达式强制转换为一种特定的数据类型。
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)
各部分说明
expression
必选。源数据类型的任何表达式。
返回值数据类型
函数名确定它返回的值的数据类型,如下表所示。
函数名 |
返回数据类型 |
expression 参数范围 |
CBool |
Boolean 数据类型 (Visual Basic) |
任何有效的 Char、String 或数值表达式。 |
CByte |
Byte 数据类型 (Visual Basic) |
0 到 255(无符号);舍入小数部分。1 |
CChar |
Char 数据类型 (Visual Basic) |
任何有效的 Char 或 String 表达式;只转换 String 的第一个字符;值可以为 0 到 65535(无符号)。 |
CDate |
Date 数据类型 (Visual Basic) |
任何有效的日期和时间表示法。 |
CDbl |
Double 数据类型 (Visual Basic) |
负值取值范围为 -1.79769313486231570E+308 到 -4.94065645841246544E-324;正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。 |
CDec |
Decimal 数据类型 (Visual Basic) |
对于零变比数值,即无小数位数值,为 +/-79,228,162,514,264,337,593,543,950,335。对于具有 28 位小数位的数字,范围是 +/-7.9228162514264337593543950335。最小的可用非零数是 0.0000000000000000000000000001 (+/-1E-28)。 |
CInt |
Integer 数据类型 (Visual Basic) |
-2,147,483,648 到 2,147,483,647;舍入小数部分。1 |
CLng |
Long 数据类型 (Visual Basic) |
-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807;舍入小数部分。1 |
CObj |
Object 数据类型 |
任何有效的表达式。 |
CSByte |
SByte 数据类型 (Visual Basic) |
-128 到 127;舍入小数部分。1 |
CShort |
Short 数据类型 (Visual Basic) |
-32,768 到 32,767;舍入小数部分。1 |
CSng |
Single 数据类型 (Visual Basic) |
负值的取值范围为 -3.402823E+38 到 -1.401298E-45;正值的取值范围为 1.401298E-45 到 3.402823E+38。 |
CStr |
String 数据类型 (Visual Basic) |
CStr 的返回值取决于 expression 参数。请参见返回 CStr 函数的值。 |
CUInt |
UInteger 数据类型 |
0 到 4,294,967,295(无符号);舍入小数部分。1 |
CULng |
ULong 数据类型 (Visual Basic) |
0 到 18,446,744,073,709,551,615(无符号);舍入小数部分。1 |
CUShort |
UShort 数据类型 (Visual Basic) |
0 到 65,535(无符号);舍入小数部分。1 |
1 小数部分可能要进行称为“四舍六入五成双”的特殊类型舍入。有关更多信息,请参见“备注”。
备注
通常,在 Convert 类或在独立类型结构或类中,应优先使用 Visual Basic 类型转换函数,其次使用 .NET Framework 方法(例如 ToString())。Visual Basic 函数设计用于优化与 Visual Basic 代码之间的交互,并且这些函数使源代码更简短、更易阅读。另外,.NET Framework 转换方法产生的结果不一定与 Visual Basic 函数产生的结果相同,例如当将 Boolean 转换为Integer 的时候。有关更多信息,请参见数据类型的疑难解答。
行为
如果小数部分正好是 0.5,整数转换函数将其舍入为最接近的偶数整数。例如,0.5 舍入为 0,1.5 和 2.5 都舍入为 2。这有时称为“四舍六入五成双”,其目的是弥补在将许多这样的数字相加时可能会累积的偏量。
CInt 和 CLng 与 Int、Fix 函数 (Visual Basic) 不同,后者截断而不是舍入一个数字的小数部分。此外,Fix 和 Int 总是返回与传入的数据类型相同的值。
如果需要以区域设置指定的格式之外的格式在值的字符串表示形式之间转换,则不能使用 Visual Basic 类型转换函数。如果进行转换,请使用该值类型的 ToString(IFormatProvider) 方法和 Parse(String, IFormatProvider) 方法。例如,将字符串转换为 Double 时,使用 System.Double.Parse(System.String,System.IFormatProvider),将 Double 类型的值转换为字符串时,使用 System.Double.ToString(System.IFormatProvider)。
CType 函数
CType 函数采用第二个参数 typename,并且将 expression 强制转换为 typename,其中 typename 可以是存在有效转换的任何数据类型、结构、类或接口。
有关 CType 与其他类型转换关键字的比较,请参见 DirectCast 和 TryCast。
CBool 示例
下面的示例使用 CBool 函数将表达式转换为 Boolean 值。如果表达式的计算结果为非零值,CBool 将返回 True;否则返回 False。
VB
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 示例
下面的示例使用 CByte 函数将表达式转换为 Byte。
VB
Dim aDouble As Double
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)
CChar 示例
下面的示例使用 CChar 函数将 String 表达式的第一个字符转换为 Char 类型。
VB
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)
CChar 的输入参数必须是 Char 或 String 数据类型。由于 CChar 不能接受数值数据类型,因此无法使用 CChar 将数字转换为字符。下面的示例获取一个表示码位(字符代码)的数字,然后将其转换为对应的字符。它使用 InputBox 函数 (Visual Basic) 获取数字字符串,并使用 CInt 将该字符串转换为 Integer 类型,然后使用 ChrW 将该数字转换为 Char 类型。
VB
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 示例
下面的示例使用 CDate 函数将字符串转换为 Date 值。通常,建议不要使用硬编码的日期和时间作为字符串(如下例所示)。而应使用日期文本和时间文本,如 #Feb 12、1969# 和 #4:45:23 PM#。
VB
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 示例
VB
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 示例
下面的示例使用 CDec 函数将一个数值转换为 Decimal。
VB
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 示例
下面的示例使用 CInt 函数将一个值转换为 Integer。
VB
Dim aDbl As Double
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)
CLng 示例
下面的示例使用 CLng 函数将多个值转换为 Long。
VB
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 示例
下面的示例使用 CObj 函数将一个数值转换为 Object。Object 变量本身只包含一个四字节的指针,该指针指向赋给 Object 变量的 Double 值。
VB
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 示例
下面的示例使用 CSByte 函数将一个数值转换为 SByte。
VB
Dim aDouble As Double
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)
CShort 示例
下面的示例使用 CShort 函数将一个数值转换为 Short。
VB
Dim aByte As Byte
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)
CSng 示例
下面的示例使用 CSng 函数将多个值转换为 Single。
VB
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 示例
下面的示例使用 CStr 函数将一个数值转换为 String。
VB
Dim aDouble As Double
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)
下面的示例使用 CStr 函数将 Date 值转换为 String 值。
VB
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 始终以符合当前区域设置的标准短格式呈现 Date 值,如“6/15/2003 4:35:47 PM”。但是,CStr 会取消日期的“中性值”1/1/0001 和时间的“中性值”00:00:00。
有关由 CStr 返回的值的详细信息,请参见返回 CStr 函数的值。
CUInt 示例
下面的示例使用 CUInt 函数将一个数值转换为 UInteger。
VB
C#
C++
F#
JScript
复制
Dim aDouble As Double
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)
CULng 示例
下面的示例使用 CULng 函数将一个数值转换为 ULong。
VB
Dim aDouble As Double
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)
CUShort 示例
下面的示例使用 CUShort 函数将一个数值转换为 UShort。
VB
Dim aDouble As Double
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)
请参见
参考
Conversion 函数 (Visual Basic)
Asc、AscW 函数
Chr、ChrW 函数
Int、Fix 函数 (Visual Basic)
Format 函数
Hex 函数 (Visual Basic)
Oct 函数
Str 函数
Val 函数
其他资源
Visual Basic 中的类型转换