1、第2章 VB.NET语言基础,21数据类型,一个编程元素的数据类型是指该元素可以包含何种数据以及如何存储数据。 基本数据类型:系统定义 用户自定义数据类型 其它数据类型,2.1.1 通用类型系统,通用类型系统(CTS)定义了如何在公共语言运行时环境(CLR)中声明、使用和管理数据类型。在VB.NET中使用的每种数据类型都和CTS中的一种类型直接对应。 CTS支持两种类型:值类型和引用类型。 值类型直接包含数据。包括:所有的数值数据类型、Boolean、Char、Date、所有结构、枚举类型。 引用类型数据包含指向对象实例的引用或指针。引用类型包括:String、所有数组和类。 对一个值类型数据
2、的操作不会影响其他类型数据;而对一个引用类型数据的操作会影响其他引用类型数据。,2.1.2 基本数据类型(P20 表2-2),1、数值数据类型 (1) 整数类型有符号整数类型包括:Short(16位)、Integer(32位)和Long(64位)。无符号整数类型包括:Byte(8位)。 (2) 非整数类型非整数类型包括Decimal(128位)定点数、Single(32位)单精度浮点数和Double(64位)双精度浮点数。它们都是有符号类型。如果数据有小数,则应声明为非整数类型。定点数取值不允许有舍入的误差,而浮点数允许有舍入的误差。 2. 字符数据类型字符数据类型,用以处理可打印和显示的字符
3、。字符数据类型包括Char类型和String类型,它们不能和数字类型数据直接进行转换。,(1) Char类型Char类型(也称为单个字符数据类型)为单个两字节(16位)Unicode字符。可以对Char型数据使用IsDigit和IsPunctuation方法,以确定其Unicode分类。例如:Dim ynChar As Char 数据ynChar被声明为Char数据类型ynChar = “y“ 把字符“y“赋给Char型数据 (2) String类型String类型(也称为字符串数据类型)为0个或多个双字节Unicode字符序列。例如:Dim strName As String 数据str被声
4、明为String数据类型strName=”tom”strName=”,3. 布尔数据类型Boolean布尔数据类型(32位)只有两个值:真(True)和假(False),经常被用来表示逻辑判断的结果。Dim b As Booleanb=true4. 日期数据类型Date日期数据类型(64位)表示日期时间,其中存储了从公元1年1月1日中午12点到公元9999年12月31日下午12点。注意:日期数据必须用“#”括起来。日期时间数据中可以只有日期,也可以只有时间。Dim todayDate,MyBir As DatetodayDate=#10/31/2004 10:50:40 PM#MyBir=#1
5、0/31/1986 10:50:40 PM#5. 对象数据类型Object对象数据类型为一个32位地址,它指向应用程序或其他应用程序中的一个对象。如果数据为Object类型,则它可以指向任何应用程序可处理的对象。它可以接收任何类型数据。当其中包含值类型时,Object类型数据被作为值类型处理;当其中包含引用类型时,Object类型数据被作为引用类型处理。,2.1.3数据类型的转换,2.1.4 自定义数据类型,用户自定义数据类型在中又称为结构,其格式: Private|Public Structure 类型名称元素名称 As 数据类型元素名称 As 数据类型End Structure例子:pub
6、lic structure studentsId as stringName as stringAge as integerEnd structure定义完自定义类型后,就可以声明该类型的变量了。Dim student as students使用自定义类型变量就像使用对象的属性一样,例如,可以使用下列方法存取student中的变量。Student.name=”张军”Student.id=”9800235”Student.age=25,2.1.5数组,数组是存放在内存连续地址区域的、具有相同数据类型的若干数据。数组中的元素用 数组名称(i)表示 :i: 0n ,称为索引值或下标值。 1、声明与使
7、用数组必须先声明后使用。 声明格式:DIM 数组名称(下标大小,下标大小,下标大小 ) AS 数据类型注:数组中元素个数下标大小1,因从0开始索引。声明数组的格式还很多,而且可以不指定数组大小,当指定数组大小时,数组的元素个数必须与所定义的数组大小相符。如:dim intarray1(9) as integer设置数组值格式1: 数组名称(下标值)元素值格式2: Dim 数组名称() As 数据类型值1,值2,声明数组的同时指定它的初始值。,例:intarray1(0)=12dim intarray2( ) as integer=10,14,20,26,22,30 2、改变数组的大小ReDIM
8、 Preserve数组名称(下标大小)缺省Preserve时会丢失数组中原有的内容。注意事项:redim语句仅可以在过程级出现,不能在类或模块级重新定义数组;用来更改已被正式声明的数组的一个或多个维度的大小,但不能更改该数组的维数;不能更改数组变量的数据类型,也不能提供数组元素的新初始化值。,2.1.6枚举类型,枚举用于提供成组的相关常数,并将这组常数与名称相关联。在编程时,可以使用名称来代替常数值。枚举中的常数必须是整数类型(Byte、Short、Long或Integer),默认为Integer型。只能在类或模块的声明部分中创建枚举,不能在方法中声明枚举。 声明枚举: Protected|P
9、rivate|Public|Friend|Protected Friend Enum 枚举名称 As 整数数据类型字段名1整数值字段名2整数值End Enum默认情况下,枚举中第一个常数初始化为0,后面的常数初始化为前面常数加1的值。例如下面的枚举weekdays包含名为Sunday值为0的常数、名为Monday值为1的常数、名为Tuesday值为2的常数等:,public enum weekdaysSundayMonday TuesdayWednesdayThursdayFridaySaturdayEnd enum 枚举成员的引用引用枚举成员时,使用 枚举名称.字段名 系统枚举为方便用户编程
10、,VB.NET系统已定义了大量的枚举数据,这些数据又称为系统常数或常量。使用方法同上。,2.2 常量,常量是指在程序运行过程中始终不变的量。经常是一些常数值或字符串,为方便编程,开发人员常常给常量定义一个有意义的名字。常量有用户自定义常量和系统预定义常量,它们的使用方法一样。 2.2.1常量声明 Public|Private Const 常量名称 As 数据类型常量值缺省常量的作用范围指Private。缺省数据类型指常量值的数据类型,若Option Strict On状态(严格类型检查)时,必须为常量指定具体的数据类型。Const pi=3.1415926 2.2.2系统常量前面学习枚举时已谈
11、到,系统已定义了大量的常量。如 Me.WindowState=FormWindowsState.Maximized 窗口最大化 Maximized就是系统定义的枚举值。,2.3 变量,变量就是命名内存的内存单元位置,变量中的值可以在程序执行过程中变化。形象理解:每个变量为一个盒子,盒子有一个名字,盒子中存放的东西就是数据。 2.3.1声明变量在默认情况下,变量必须先声明后使用(与VB不同),目的在于告诉系统应分配多少内存空间给变量。 格式:Public|Protected|Friend|Protected Friend|Private|Static|Dim 变量名 As 数据类型初始值 如:D
12、im I as IntegerDim a,b,c as StringDim x as Integer,y as string,赋予变量的初值 方法1:变量名称=初始值例:dim I as integerI=10 方法2:DIM 变量名称 AS 数据类型=初始值声明变量的同时赋予初值。例:dim I as integer=10dim d as date=#1/15/2002 1:45:00 PM#变量默认初始值: 数值类型:0;Boolean:False;String:Nothing;Object:Nothing;Date:00:00:00,变量的命名命名规则:变量名称只能由字母、数字及下划线组
13、成。变量名称必须以英文字母开头,不区分大小写。组成变量名的字符数不能超过255个字符。不得使用VB.NET的关键字作为变量名称。如:dim、for、if等。在同一个“作用范围”中不能有两个名称相同的变量。,匈牙利命名法变量名称由两部分组成,前辍 :小写字母,数据类型的缩写,表示数据类型;第二部分首字母大写、英文单词表示变量代表的含意。例: intX,strAddress,2.3.2变量的生存期、作用范围和可访问性,变量的生存期指变量被创建到被销毁的时间段。变量在整个生存期会保持它的数据。 变量(或常量)的作用范围(又称可见性)是指变量在程序的哪一部分是可用的。变量的生存期和作用范围有一定联系,
14、但不完全相同。比如一个过程级的变量,其生存期和作用范围相同,而在一个过程的程序块中定义的变量,作用范围是这个块,而生存期是整个过程。如: if i12 thendim j as integerj=i*3 end if 变量的作用范围取决于其声明的位置和声明语句使用的关键字。程序可以有多个同名但作用范围不同的变量,这些变量是完全独立的。变量的作用范围决定了它的可访问性。,Dim和Static的区别:例子(P24),Static num As IntegerDim num As Integernum = num + 1MsgBox(num)注:通常,过程终止后,此过程中的局部变量将立即消失。静态变
15、量可继续存在,并保留其最新值。您的代码下次调用此过程时,此变量将不会重新初始化,仍然存储已赋给它的最新值。静态变量在定义它的类或模块的生存期内继续存在。Static 变量的声明上下文必须是一个过程或过程中的块,而不能是源文件、命名空间、类、结构或模块 。,2.3.3声明变量的关键字、位置与变量的作用范围,Dim只能用在声明过程变量,Public、Private、Friend可以用在声明模块、结构、类或实例的变量中,Protected、Friend Protected只能用在声明类的变量。 Public(公有的):作用范围是整个应用程序。 Private(私有的):作用范围是其声明的模块、结构或
16、类。 Dim(私有的):作用范围是其声明的过程。 Friend(友好的):作用范围是相同的项目内。 Protected(保护的):作用范围是其声明的类以及该类的派生类。 Friend Protected:作用范围是整个项目以及其声明的类的派生类。,影响变量作用范围主要有三个因素: 声明的位置(块、过程、模块、类或结构) 声明所在的模块、类或结构的访问级别(Public、Private、Friend、Protected) 用来声明变量的关键字(Dim、Public、Private、Friend),2.4 运算符与表达式,2.4.1 算术运算符和算术表达式,算术运算符的优先级:,2.4.2 字符串
17、运算符和字符串表达式,1&连接运算符result =expression1 & expression2 2.“+”号result =expression1+expression2对数值做加运算;对字符串连接操作(此时与&一样)还是连接,由参加运算的两个表达式数据类型而定。,2.5 常用内部函数,在VB.NET中,有两类函数:内部函数和用户自定义函数。内部函数也称为标准函数,是VB.NET系统内部已经封装好的,给用户使用的功能完善的函数。用户自定义函数是由用户自己根据需要定义的函数。,使用命名空间(名称空间)来组织类,用来防止类名冲突。任何.net框架的类都在一个命名空间中,要识别一个类,不仅要
18、指明类名,而且要说明类的命名空间。如console.write。函数是类,因此,在编程使用函数时应在函数名前加入命名空间的前缀。如:math.abs。如果编程时在代码窗口顶部使用imports语句引入一个命名空间,语法:imports 命名空间,则该命名空间下的所有对象不需要命名空间前缀即可使用,这样可以少按键并使代码简洁。如:imports system.console引入console类,则可直接使用该命名空间中的方法,如:write(”This is a test”) 注:Imports语句应放在除了Option以外所有语句的前面;模块中可以使用多个imports语句引入多个命名空间。,
19、下面介绍部分常用的内部函数。,2.5.1 数学函数 数学函数的命名空间:System.Math,随机数:system.random类 P30表2-10,例: Dim r As New System.Random()Dim i As IntegerDim str As String = “随机数“For i = 0 To 10str = str + “ “ + CStr(r.Next(0, 100)NextMsgBox(str),2.5.2 字符串函数 字符串函数的命名空间:System.VisualBasic,2.5.3 时间日期函数,2.5.5 转换函数,2.5.6 格式输出函数,对于数字、日期和时间,都有公认的格式。但也可以用格式输出函数使数值、日期或字符串型数据按指定格式输出。Format函数的语法格式为:Format(表达式,格式字符串) 是一个字符串常量或变量,由专门的格式说明字符组成。如: Label1.Text=Format(now,”dddd”) 显示星期几 TextBox1.Text=Format(12,”00.00”) 显示12.00,