一、数值类型
1、unsigned 和 signed 数值类型
sign 指的是 +/- 正负符号,unsigned 数值类型即无正负符号的数值类型,也就是正值数值类型;signed数值类型即带正负符号的数值类型,可能是正值也可能是负值,但其绝对值范围约为对应 unsigned数值类型的一半。
如:SByte (signedByte)占用1个字节,取值范围为 -128 到 127,而 Byte取值范围为0到255。
Short 占用2个字节,取值范围为-32768 到32767,而 UShort (unsigned Short) 取值范围为0到65535。
Integer 占用4个字节,取值范围为 -2147483648到 2147483647,而UInteger (unsigned Integer)取值范围为0到
4294967295。
Long 占用8个字节,取值范围为 -9223372036854775808 到9223372036854775808,而ULong (unsigned Integer) 取值范围为0到18446744073709551615。
Decimal 可以表达更大精确度。
2、非整数 数值类型
非整数类型包括Single(32位,4字节)单精度浮点数和Double(64位,8字节)双精度浮点数。浮点数也就是实数。定点数取值不允许有舍入的误差,而浮点数允许有舍入的误差。可以用Rnd函数表示一个随意的>=0而且小于1的Single数,比如表示一个1-10之间的整数:var=Int(Rnd()*10+1)。Decimal(128位,16字节)定点数表示的小数范围比Single和Double要小,但精确度高。
3、System命名空间还提供了以位为标志的整型数值类型:Int16、Int32、Int64、UInt16、UInt32、UInt64。在VB6中,一个Long类型数值占用32位(4字节),而在VisualBasic .NET 中一个Integer类型数值就占用32位,Long类型数值占用64位(8字节)。Byte8位,1个字节;Short16位,2个字节。计算机处理4字节数值更高效一些,所以我们一般常声明整数用Integer,声明小数用Single。
4、数值变量类型符
附加在变量名称后面,等于 As +相应的类型名。如: Dim zhengshu% (= Dim zhengshu As Integer)
% --Integer, ! -- Single,# -- Double, & -- Long,@ -- Decimal
5、文字式数值类型符
附加在数字赋值后面。如: j = 12S (= Dim j AsShort : j = 12)
S --Short, US -- UShort, I --Integer, UI -- UInteger, L --Long, UL -- ULong, D -- Decimal, F --Single(F=floating point), R --Double(R=real)。
另外在数字前加 &O 表示8进制数值,在数字前加 &H 表示16进制数值。可以用Hex(数值)返回相应16进制表达字符,用 Oct(数值)返回相应8进制表达字符。
二、字符类型
字符数据类型,用以处理可打印和显示的字符。字符数据类型包括Char类型和String类型,它们不能和数字类型数据直接进行转换。
1、 Char类型
Char类型(单个Unicode字符数据类型,也就是说这种变量只接受一个字符的数据)占用单个两字节(16位)Unicode字符(统一的字符编码标准,采用双字节对字符进行编码,中文就是Unicode字符,而英文则是非Unicode字符)。
2、 String类型
String类型(也称为字符串数据类型)为0个或多个双字节Unicode字符(最多有近20亿个),初始值为null。
三、日期类型
Date日期数据类型(64位)表示日期时间,范围从公元1年1月1日0:0:00到公元9999年12月31日11:59:59。注意:Date类型必须用“#”括起来。Date类型中可以只有日期,也可以只有时间,日期用/号分割,时间用:号分割。Date类型是以数字存储的,所以可以用DateDiff计算时间间隔,用DayOfYear方法计算该日期为一年中的第几天。我们可以用其ToOADate方法返回Date类型实例的等效OLE自动化日期(Double类型)。
四、布尔类型
Boolean布尔数据类型(32位)占用2个字节,只有两个值:真(True)和假(False),经常被用来表示逻辑判断的结果。
五、对象类型
Object对象数据类型为一个32位地址,相当于VB6中的Variant类型,它指向应用程序或其他应用程序中的一个对象。如果数据为Object类型,则它可以指向任何应用程序可处理的对象。它可以接收任何类型数据。当其中包含值类型时,Object类型数据被作为值类型处理;当其中包含引用类型时,Object类型数据被作为引用类型处理。
六、自定义结构/值类型
在VB6中用户自定义类型的关键字是Type,在vb.net中大部分用Structure,可以包含有一个或多个不同种类的数据类型,尽管结构中的数据可以单独被访问,但是这些数据仍被认为是一个集合整体。
自定义结构类型的定义以Structure关键字开始,以EndStructure关键字结束,结构中的元素可以是任意的数据类型的组合,包括其他结构。结构一旦定义出来后就可以被用作变量声明、参数传递以及函数的返回值等用途,下面是一个结构的语法:
如下例定义一个Employee结构:
Structure Employee
PublicFirstName As String
Public FamilyName As String
Public Extension As Long
End Structure
Structure类型占用内存空间是其包含的所有数据类型所占用内存空间的总和。
七、数据类型转换
CBool,CByte,CSByte,CChar,CStr,CDate,CDble,CSng,CDec,CInt,CUInt,CShort,CUShort,CLng,CULng,CObj
1.取整函数
(1)整型转换函数是将小数部分四舍五入掉,使被转换的数值转变为其最接近的整数值。注意:如果小数部分正好是0.5,CInt和CLng会四舍五入到最接近的偶数值。如:CInt(0.5)结果为0,CLng(4.5)结果为4,CInt(7.5)结果为8,CLng(14.7)结果为15。
(2)Fix和Int函数不四舍五入,直接删除小数部分,取得整数值部分。Fix的取值方向趋向0,如:Fix(-9.9)结果为-9,Fix(-9.2)结果为-9,Fix(-0.9)结果为0。但Int函数在取负数小数的整数时,会取比当前数值小的整数部分,如:Int(-9.9)结果为-10,(-9.2)结果为-10。所以,当负数小数部分大于0.5时,CInt相当于Int。
(3)CInt返回值为Integer类型,CLng返回值为Long类型;而Fix和Int返回值与被转换的数值类型一致。
2.CType、DirectCast、TryCast(被转换数据,数据类型X)
三个函数均返回数据类型X,但DirectCast和TryCast被转换数据必须继承自或实现数据类型X,否则DirectCast会发生InvalidCastException错误,而TryCast会返回Nothing。DirectCast可以接值类型(已过时)或索引类型,而TryCast只接索引类型。
Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' 以下转换会发生错误
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' 以下转换成功
c = DirectCast(f, System.Windows.Forms.Control)
3.Parse和ToString方法
基础数据类型(除String外)的Parse方法将字符数据转换为该类型。 Parse在对字符数据进行转型时比CType,CDate等要快。例:
Dim rq as Date
rq = Date.Parse("3-4-1999)
变量名.ToString()--〉将变量的值转换为文本。ToString可以带有一个格式化文本的字符参数,如:
Dim s As Double,str As String
s = 455454454
str = s.ToString("0.00")
str显示结果为455454454.00
4.Convert类
Convert类提供了许多方法.ToBool,ToByte,ToChar,ToDateTime,ToDecimal,ToDouble,ToSByte,ToSingle,ToString,用来将一个值转换为另一种类型的值。Convert为NET框架类,所以在把数据转换为整型数值时,它使用的是.ToInt16.ToInt32 .ToInt64 .ToUInt16 .ToUInt32 .ToUInt64方法,而不是.ToInt,ToShort,ToLong。如:
Dim i As Integer =Convert.ToInt64("23")
Dim s As Boolen =Convert.ToBoolen(3)
八、判断变量数据类型
VarType(数据X)可以返回一个枚举值,该值代表数据X的数据类型。所以判断一个数值的数据类型,可以通过VarType来判断,如:
Dim lx as Integer,dbl As Double,sz AsObject
sz = 6.0
lx = VarType(v)
If lx = VarType(dbl) then
MessageBox.Show(sz.ToString &"是Double类型数值")
Else
MessageBox.Show(sz.ToString &"不是Double类型数值")
End If