vb.net类型转换函数

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)

任何有效的 CharString 或数值表达式。

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 的时候。有关更多信息,请参见数据类型的疑难解答

行为

  • 强制转换。通常,可以使用数据类型转换函数将运算结果强制转换为某一特定数据类型而非默认数据类型。例如,在通常发生单精度、双精度或整型运算的情况下,使用 CDec 强制执行小数运算。
  • 转换失败。如果传递给函数的 expression 超出要转换成的数据类型的范围,将发生 OverflowException
  • 小数部分。将一个非整数值转换为整型时,整数转换函数(CByteCIntCLngCSByteCShortCUIntCULng  CUShort)将移除小数部分,并将该值舍入为最接近的整数。

如果小数部分正好是 0.5,整数转换函数将其舍入为最接近的偶数整数。例如,0.5 舍入为 01.5 2.5 都舍入为 2。这有时称为四舍六入五成双,其目的是弥补在将许多这样的数字相加时可能会累积的偏量。

CInt  CLng  IntFix 函数 (Visual Basic) 不同,后者截断而不是舍入一个数字的小数部分。此外,Fix  Int 总是返回与传入的数据类型相同的值。

  • 日期/时间转换。使用 IsDate 函数 (Visual Basic) 可确定一个值是否可转换为日期和时间。CDate 能够识别日期文本和时间文本,但不能识别数值。若要将 Visual Basic 6.0 Date 值转换为 Visual Basic 2005 Date 值,可以使用 System.DateTime.FromOADate(System.Double) 方法。
  • 中性日期/时间值。Date 数据类型 (Visual Basic) 始终包含日期和时间信息。为进行类型转换,Visual Basic 1/1/0001(公元 1 1 1 日)作为日期的中性值,将 00:00:00(午夜)作为时间的中性值。如果将 Date 值转换为字符串,CStr 的结果字符串中将不包含中性值。例如,如果将 #January 1, 0001 9:30:00# 转换为字符串,结果为“9:30:00 AM”;日期信息被删除了。但是,日期信息仍然保留在原来的 Date 值中,并可以使用 DatePart 函数 (Visual Basic) 等函数进行恢复。
  • 区域差异。涉及字符串的类型转换函数根据应用程序的当前区域设置进行转换。例如,CDate 依据系统的区域设置来识别日期的格式。必须以正确的顺序为区域设置提供日、月、年数据,否则可能无法正确解释日期。系统无法识别包含星期几的字符串(如“Wednesday”)的长日期格式。

如果需要以区域设置指定的格式之外的格式在值的字符串表示形式之间转换,则不能使用 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 121969# #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 函数将一个数值转换为 ObjectObject 变量本身只包含一个四字节的指针,该指针指向赋给 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)
AscAscW 函数
ChrChrW 函数
IntFix 函数 (Visual Basic)
Format 函数
Hex 函数 (Visual Basic)
Oct 函数
Str 函数
Val 函数

其他资源

Visual Basic 中的类型转换

 

你可能感兴趣的:(.NET)