收藏 分销(赏)

第6章数组与集合.pptx

上传人:快乐****生活 文档编号:9447286 上传时间:2025-03-26 格式:PPTX 页数:73 大小:856KB 下载积分:16 金币
下载 相关 举报
第6章数组与集合.pptx_第1页
第1页 / 共73页
第6章数组与集合.pptx_第2页
第2页 / 共73页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2016-8-5,#,VB.NET,程序设计实训教程,第,6,章,数组与集合,6.1 数组,6.2,数组重定义,6.3,对象数组,6.4,集合与控件数组,6.5,实训练习,6,6.1,数组,6.1.1 数组的分类,1VB.NET中的数组分类,(1),按数组的大小(元素个数)是否可以改变可分为:固定大小(定长)数组、动态(可变长)数组。,(2),按元素的数据类型可分为:数值型数组(整型、实型)、字符串数组、逻辑型数组、日期型数组等,这些都是基本数据类型的数组,数组类型也可以是,Object,类型。,(3),按数组的维数可分为:一维数组,和,二维数组、三维数组等多维数组。,2按作用域分类,与变量一样,数组按作用域分可为:全局数组(应用程序级)、模块级数组和局部数组(过程级)。,(1),全局数组:在标准模块的声明部分使用,Public,声明,其作用范围是整个应用程序,可以在应用程序的所有模块中访问数组。,(2),模块级数组:在模块的声明部分使用,Private,或,Dim,语句(二者等价)声明,模块级数组只在声明它的模块中可用。,(3),过程级数组:在过程中使用,Dim,或,Static,语句声明,只能在本过程中使用。使用,Static,声明的静态数组,在过程的两次执行之间它的所有元素的值均被保留。,6.1.2 一维数组,1一维数组的声明,数组的声明格式为,(两种格式),格式一:,Dim,数组名,(,下标上界,)As,例如,:,Dim arrData(2)as String,Dim arrA(5)As Integer,说明:,按作用域不同,关键字,Dim,可以换成,Public,、,Static,数组名的命名规则与变量的命名规则相同。,VB.NET,数组下界为,0,,且不能更改(与旧版本,VB,不同),数组的元素个数为:下标上界,+1,。,VB.NET,中,声明数组时,,值可以是整型常量、变量或表达式。,例如:,Dim m As Integer,m=5,Dim arrA(m)As,。,声明数组时,下标上界最好是整型数据,如果是浮点数,系统会自动四舍五入取整。,例如,,Dim arrA(4.5)As Intege,下标上界为,5,数组中各元素在内存占一片连续的存储空间。,声明数组的第二种格式:,Dim,数组名,()As,数据类型,1=New,数据类型,2(),注意:数据类型,2,和数据类型,1,必须相同,下标上界后的一对大括号,不能省略。,Dim,数组名,As,数据类型,1()=New,数据类型,2(),Dim,数组名,=New,数据类型,2(),例如,以下三种格式是等效的:,Dim arrA()AsvInteger=New Integer(4),Dim arrAAsInteger()=New Integer(4),Dim arrA=New Integer(4),2.一维数组的引用,引用形式:数组名,(,下标,),定义了数组后可以引用数组元素,每个数组元素有一个唯一序号,称为下标,下标可以是整型常量、变量或表达式。如果下标不是整数,系统会自动四舍五入取整。,例如,,定义两个数组:,Dim arrA(10),arrB(10)As Integer,则下面的语句都是正确的:,arrA(1)=arrA(2)+arrB(1)+5 ,下标是整数,arrA(i)=arr B(i),下标使用变量,arrB(i+1)=arrA(i+2),下标使用表达式,引用数组元素时,,VB.BET,对下标范围进行检查,正确的下标范围是,0,下标上界,超出范围会提示相应错误信息,索引超出了数组界限。,3.一维数组的基本操作,(1),数组的初始化,数组的初始化是指在声明数组的同时为数组元素赋初值,具体格式有以下两种:,Dim,数组名,()As,数据类型,=,表达式,1,,表达式,2,.,表达式,n,Dim,数组名,As,数据类型,()=,表达式,1,,表达式,2,.,表达式,n,例如:,Dim arr A()As Integer=1,2,3,4,5,注意:,对数组进行初始化时,不能指定数组上界。,例如,,Dim arrA(5)As Integer=1,2,3,4,5,,运行时会提示如下错误信息“对于用显式界限声明的数组不允许进行显式初始化”。,数组长度由花括号内数据个数决定。上例中数组,arrA,的长度为,5,。,如果对数组不进行显式初始化,系统会进行隐式初始化。,数值型数组被初始化为,0,,字符型被初始化为空串,“”,,布尔型数组初始化为,False,,日期型数组被初始化为,01/01/0001 00:00:00,。,格式三:,Dim,数组名,()As,数据类型,1=New,数据类型,2(),表达式,1,,表达式,2,.,表达式,n,例如:,Dim arrA()As Single=New Single()1,2,3,4,5,注意:,用,New,子句初始化时,数组名后的圆括号可以放到数据类型,1,后面,也可以将数组名后的圆括号、,as,和数据类型,1,都省略。,通常数据类型,2,后的圆括号中不指定下标上界,元素个数由在大括号,中提供的数值个数决定。但也可以同时提供下标上界和元素值,此时,必须为数组的每个元素都提供初始值,即大括号中的数值个数必须为下标上界,+1,。如上例的声明可改为:,Dim arrA()As Single=New Single(4)1,2,3,4,5,(2),数组的整体赋值,数组的整体赋值是指先声明数组,然后用赋值语句对其进行整体赋值。格式为:,Dim,数组名,(,下标上界,n)As,数据类型,数组名,=,表达式,1,,表达式,2,.,表达式,n,表达式,n+1,例:,DimarrA(4)As Integer,arrA=1,2,3,4,5,在,VB.NET,中,也可以用一个已知数组给另一个数组进行一次性赋值,只要这两个数组的数据类型相同即可。例如:,DimarrA(4)AsInteger=1,2,3,4,5,DimarrB(4)AsInteger,arrB=arrA,(3),通过循环在程序中逐个为数组元素赋值,在编写程序时已经能够确定各元素值的,可以在循环体中通过赋值语句赋值。例如:,DimarrA(9)AsInteger arrA,数组索引值范围为,0,9,For i=0 To 9,arrA(i)=i+1 arrA,数组的元各素值分别为,1,2,3,.,9,10,Next i,如果是在程序运行时给数组赋值,可以通过,TextBox,控件或,InputBox,函数逐个输入数组各元素值,如果是控制台应用程序,可以用,read,或,readline,来实现。,例如,输入,10,个数,存入到数组,arrA,中,代码为:,DimarrA(9)AsInteger,For i=0 To 9,arrA(i)=Val(InputBox(,输入,A(&i&),的值,),Next i,(4),数组的输出,数组的输出,不能通过数组名进行整体输出,只能逐个输出数组元素。具体地,通过循环结构,使用,TextBox,控件、,label,控件,或,messagebox,函数输出数组元素的值。如果是控制台应用程序,可以用,console.write,或,console.writeline,来输出。例如:,For i=0 To 9,Call MessageBox.Show(A(i),Next I,(5)For Each.Next,循环的使用,利用,For Each.Next,循环可以遍历数组中的每个元素,例如:,DimarrA()Asstring=A,B,C,D,E,For Each str As string In arrA,Call MessageBox.Show(str),Next str,该语句可以令,str,依次取数组,arrA,中的每个元素值,遍历数组,arrA,。不论数组有多少个元素,代码都适用,。,【例,6-1,】创建一个窗体应用程序,程序运行结果如图,6-1,所示。要求定义一个包含,10,个元素的一维数组,数组元素值是随机产生的,10,个,100,以内的整数,求数组中最大元素及所在位置。,实现步骤:,(1),启动,VS2013,,创建窗体应用程序例,6-1,。,(2),按照图,6-1,所示设计应用程序界面。修改三个标签控件、按钮控件的,Text,属性。,(3),在代码窗口中定义模块级一维数组,arrA(9),(4),编写“产生数组”按钮的代码,Private Sub Button1_Click(sender As Object,e As EventArgs)Handles Button1.Click,Dim i As Integer,Randomize(),TextBox1.Text=,For i=0 To 9,A(i)=Int(100*Rnd(),TextBox1.Text=TextBox1.Text+CStr(A(i)+,Next,TextBox1.Text=Mid(TextBox1.Text,1,Len(TextBox1.Text)-1),End Sub,(5),编写“最大值及其位置”按钮的代码。,Private Sub Button2_Click(sender As Object,e As EventArgs)Handles Button2.Click,Dim Max,IMax As Integer,Max=A(0):IMax=0,For i=1 To 9,If A(i)Max Then,Max=A(i),IMax=i,End If,Next i,TextBox2.Text=Str(Max),TextBox3.Text=Str(IMax)+1,End Sub,(6),编写“退出”按钮代码。,Private Sub Button3_Click(sender As Object,e As EventArgs)Handles Button3.Click,Application.Exit(),End Sub,(7),运行程序。,6.1.3 二维数组,1二维数组的声明,声明二维数组格式为:,格式一:,Dim,数组名,(,下标,1,上界,下标,2,上界,)As,数据类型,格式二:,Dim,数组名 数据类型,(,下标,1,上界,下标,2,上界,),例如:,DimarrA(2,3)AsSingle,也可以使用,New,子句创建二维数组,格式为:,格式,三,:,Dim,数组名,(,)As,数据类型,1=New,数据类型,2(,下标,1,上界,下标,2,上界,),例如,,Dim arrB(,)AsInteger=NewInteger(2,3),2二维数组的引用,引用形式:数组名,(,下标,1,下标,2),下标可以是整型变量、常量或表达式,例如,,arrA(1,2)=10,arrA(i+2,j)=arrA(2,3)*2,3二维数组的基本操作,(1),二维数组的初始化,格式一:,Dim,数组名,(,)As,数据类型,=,第,1,行元素初值序列,第,2,行元素初值序列,.,第,m,行元素初值序列,在每行的元素初值序列中,各个数值要用逗号分开。,例如:,Dim arrA(,)As Integer=1,2,3,4,5,6,7,8,9,10,11,12,采用这种格式对二维数组进行初始化时,也不能指定数组的下标上界,如果将上述语句改为:,Dim arrA(2,3)As Integer=1,2,3,4,5,6,7,8,9,10,11,12,,系统也会报错。,使用,New,子句初始化二维数组的格式为:,Dim,数组名,(,)As,数据类型,1=New,数据类型,2(,下标,1,上界,下标,2,上界,),第,1,行元素初值序列,第,2,行元素初值序列,.,第,m,行元素初值序列,例如,,Dim arrA(,)As Integer=New Integer(,)1,2,3,4,5,6,7,8,9,10,11,12,Dim arrA(,)As Integer=New Integer(2,3)1,2,3,4,5,6,7,8,9,10,11,12,(2),二维数组的整体赋值,对已定义的,m,行,n,列二维数组,整体赋值格式为:,数组名,=,第,1,行元素初值序列,第,2,行元素初值序列,.,第,m,行元素初值序列,其中每一行的初值序列都包含,n,个数值。,例如:,Dim arrA(2,3)As Integer,arrA=1,2,3,4,5,6,7,8,9,10,11,12,如果两个相同数据类型的数组的维数和长度都相等,也可以用一个数组给另一个数组赋值。例:,Dim arrA(2,3)As Integer=1,2,3,4,5,6,7,8,9,10,11,12,Dim arrB(2,3)As Integer,B=A,(3),通过循环给二维数组赋值,Dim arrA(2,3)As Integer arrA,是,34,的二维数组,Dim i,j As Integer,For i=0 To 2 i,对应下标,1,,初值为,0,,终值为下标,1,上界,For j=2 To 3 j,对应下标,2,,初值为,0,,终值为下标,2,上界,arrA(i,j)=i*j,Next j,Next i,如果要在程序运行时,逐个输入二维数组的各元素值,可将语句,arrA(i,j)=i*j,改为由,TextBox,控件或,InputBox,函数输入元素值。如:,arrA(i,j)=Val(InputBox(arrB(&i&,&j&)=?),(4),二维数组的输出,通过循环输出二维数组时,也需要双重循环,外层循环控制变量对应下标,1,,内层循环控制变量对应下标,2,,在循环体内添加对应的输出语句。具体数值可以输出到,TextBox,控件、,label,控件中,或用,messagebox,函数输出数组元素的值,如果是控制台应用程序,可以用,console.write,或,console.writeline,来输出。,例如:,Dim arrA(2,3)As Integer 34,的二维数组,Dim i,j As Integer,For i=0 To 2 i,对应下标,1,,初值为,0,,终值为下标,1,上界,For j=2 To 3 j,对应下标,2,,初值为,0,,终值为下标,2,上界,Call MessageBox.Show(arrA(i,j),Next j,Next I,【例,6-2,】定义一个,3,行,4,列整型二维数组,arrA,,从键盘上输入各元素值,求最大元素及其所在的位置。,实现:创建一个窗体应用程序,编写窗体的单击事件过程,代码如下。,Private Sub Form1_Click(sender As Object,e As EventArgs)Handles MyBase.Click,Dim a(2,3)As Integer,Dim i,j As Integer,Dim Max,Row,Col As Integer,For i=0 To 2,For j=0 To 3,a(i,j)=Val(InputBox(a(&i&,&j&)=?),Next j,Next i,Max=a(0,0):Row=0:Col=0,For i=0 To 2,For j=0 To 3,If a(i,j)a(Row,Col)Then,Max=a(i,j):Row=i:Col=j,End If,Next j,Next i,Call MessageBox.Show(,最大元素是,&Str(Max)&,在第,&Row&,行,&,第,&Col&,列,),End Sub,【例,6-3,】求二维矩阵的转置,即将矩阵的对应行和列的元素互换。程序运行界面如图,6-2,所示。,Const M=4,N=4,Private Sub Form1_Click(sender As Object,e As EventArgs)Handles MyBase.Click,Dim A(M,N),Temp As,For i=0 To M,For j=0 To N,arr A(i,j)=2*i,Next j,Next i,Dim str As String=,For i=0 To M,For j=0 To N,str=str&arrA(i,j)&,Next j,str=str&vbCrLf,Next i,str=str&vbCrLf,For i=0 To M,For j=i To N,Temp=arrA(i,j),arrA(i,j)=arrA(j,i),arrA(j,i)=Temp,Next j,Next i,For i=0 To M,For j=0 To N,str=str&arrA(i,j)&,Next j,str=str&vbCrLf,Next i,Call MessageBox.Show(str),End Sub,【例,6-4,】编程实现两矩阵相乘。,Const M1=4,N=3,M2=5,Dim A(M1-1,N-1)As Integer ,声明,M1 N,二维,A,数组,Dim B(N-1,M2-1)As Integer ,声明,N M2,二维,B,数组,Dim C(M1-1,M2-1)As Integer ,声明,M M,二维,C,数组,Private Sub Form1_Load(sender As Object,e As EventArgs)Handles MyBase.Load,Dim i,j,k As Integer,For i=0 To M1,For j=0 To N,A(i,j)=i+j+2,TextBox1.Text=TextBox1.Text&(CStr(A(i,j).PadLeft(3),Next j,TextBox1.Text=TextBox1.Text&vbCrLf,Next i,For i=0 To N,For j=0 To M2,B(i,j)=i+j+1,TextBox2.Text=TextBox2.Text&(CStr(B(i,j).PadLeft(3),Next j,TextBox2.Text=TextBox2.Text&vbCrLf,Next i,End Sub,Private Sub Button1_Click(sender As Object,e As EventArgs)Handles Button1.Click,For i=0 To M1,For k=0 To M2,For j=0 To N,C(i,k)=C(i,k)+A(i,j)*B(j,k),生成新数组,Next j,Next k,Next i,For i=0 To M1,For j=0 To M2,TextBox3.Text=TextBox3.Text&(CStr(C(i,j).PadLeft(4),Next j,TextBox3.Text=TextBox3.Text&vbCrLf,Next i,End Sub,6.1.4 多维数组,定义多维数组的格式为:,Dim,数组名,(,下标上界,1,下标上界,2,)As,数据类型,例如:,Dim arrA(5,5,5)As Integer ,声明,arrA,是三维数组,Dim arrB(2,6,10,5)As Integer ,声明,arrB,是四维数组,多维数组的操作与二维数组类似,可以用,For,循环的嵌套来处理多维数组。,当增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。,6.1.5 交错数组,交错数组是一种特殊的数组,即数组中每个元素的本身又是一个一维或多维数组,称为“数组的数组”,即交错数组,1,交错数组的声明,(1),交错数组的元素为一维数组,格式一:,Dim,数组名,(,下标上界,)()As,数据类型,采用该格式声明交错数组时,数组名后必须用两对圆括号,而且下标上界要在第一对圆括号中指定。,例如,,Dim arrA(3)()As String,格式二:,Dim,数组名,()()As,数据类型,1=New,数据类型,2(,下标上界,)(),例如,,Dim arrA()()As String=New string(3)(),声明了包含四个元素的交错数组,而且四个元素都是一维数组。,采用格式二声明交错数组时,数组名后的两对圆括号可以放到数据类型,1,后,但下标上界只能在数据类型,2,后的第一对圆括号中指定。,(2),交错数组的元素为多维数组,如果交错数组的元素为二维数组,声明格式为:,格式一:,Dim,数组名,(,下标上界,)(,)As,数据类型,格式二:,Dim,数组名,()(,)As,数据类型,1=New,数据类型,2(,下标上界,)(,),例如,,Dim arrA(,)As Integer=1,2,3,4,5,6 arrA,是,2 3,的二维数组,Dim arrB(,)AsInteger=1,2,3,4,5,6,7,8 arrB,是,4 2,的二维数组,Dim arrAB(1)(,)As Integer ,定义包含,2,个元素的交错数组,arrAB,arrAB(0)=arrA ,交错数组第一个元素赋值为二维数组,arrA,arrAB(1)=arrB ,交错数组第二个元素赋值为二维数组,arrA,如果交错数组的元素为三维数组,则声明格式为:,格式一:,Dim,数组名,(,下标上界,)(,)As,数据类型,格式二:,Dim,数组名,()(,)As,数据类型,1=New,数据类型,2(,下标上界,)(,),(3),交错数组的元素为交错数组,如果交错数组的元素为交错数组,则声明格式为:,格式一:,Dim,数组名,(,下标上界,)()()As,数据类型,格式二:,Dim,数组名,()()()As,数据类型,1=New,数据类型,2(,下标上界,)()(),例如,下列程序段中,,arrA,就是一个元素为交错数组的交错数组。,Dim arrA1()As Integer=1,2,3 arrA1,是上界为,2,的一维数组,Dim arrA2()As Integer=4,5,6,7 arrA2,是上界为,3,的一维数组,Dim arrA(1)()As Integer,arrA,是由数组,arrA1,、,arrA2,作为元素的交错数组,arrA(0)=arrA1,arrA(1)=arrA2,Dim arrB1()As Integer=11,22 arrB1,是上界为,1,的一维数组,Dim arrB2()As Integer=33,44,55 arrB2,是上界为,2,的一维数组,Dim arrB3()As Integer=66,77,88,99 arrB3,是上界为,3,的一维数组,Dim arrB(2)()As Integer,arrB,是由数组,arrB1,、,arrB2,、,arrB3,作为元素的交错数组,arrB(0)=arrB1,arrB(1)=arrB2,arrB(2)=arrB3,Dim arrAB(1)()()As Integer,arrAB,是上界为,1,的交错数组,且两个元素都是交错数组,arrAB(0)=arrA,arrAB(1)=arrB,2,交错数组的初始化,与一般数组相同,可以在声明交错数组的同时进行初始化,例如:,Dim arrA()()As Integer=New Integer()1,2,3,New Integer()4,5,6,7,对由一维数组构成的交错数组初始化,注意大括号对中的,New Integer(),不能省略。,初始化时,也可以采用,New,子句,上述初始化语句可以改为:,DimarrA()()AsInteger=NewInteger(1)()NewInteger()1,2,3,New Integer()4,5,6,7,对由二维数组构成的交错数组初始化,可以采用以下几种格式:,Dim arrAB()(,)As Integer=New Integer(,)1,2,3,4,New Integer(,)5,6,7,8,9,10,Dim arrAB()(,)As Integer=New Integer(1)(,)New Integer(,)1,2,3,4,New Integer(,)5,6,7,8,9,10,Dim arrAB()(,)As Integer=New Integer()(,)New Integer(,)1,2,3,4,New Integer(,)5,6,7,8,9,10,6.2.1 动态数组,在,VB.NET,中,声明数组时,声明格式为:,一维数组:,Dim,数组名,()As,数据类型,二维数组:,Dim,数组名,(,,,)As,数据类型,三维数组:,Dim,数组名,(,,,)As,数据类型,对于多维数组,可以以此类推进行声明。,声明动态数组时需要注意以下几点:,数组名后的括号不仅可以放在数组名后,还可以放在数据类型名后,具体为:,一维数组:,Dim,数组名,As,数据类型,(),二维数组:,Dim,数组名,As,数据类型,(,),声明二维动态数组时,不能省略数组名后面小括号中的逗号。,对于动态数组,由于声明时它只是说明了类型,却没有在内存中分配空间(因为元素个数未定),,因此,在它没有具体实例化前是不能直接使用的。,6.,2,数组,重定义,也可以使用,New,子句定义动态数组,格式为:,一维数组:,Dim,数组名,()As,数据类型,1=New,数据类型,2(),二维数组:,Dim,数组名,(,,,)As,数据类型,=New,数据类型,2(),三维数组:,Dim,数组名,(,,,)As,数据类型,=New,数据类型,2(),对动态数组,可以进行初始化和整体赋值。例如:,Dim arrA1 As Char()=nc,ec,tc ,字符数组,arrA1,初始化,长度为,3,,语句可以改为以下两条,效果是相同的:,Dim arrA1()As Char,:,arrA1=nc,,,ec,,,tc,DimarrA2()As Boolean=True,True,False,True,布尔型数组,arrB,初始化,长度为,4,。该语句也可以改为以下两条等效的语句:,DimarrA2()As Boolean,arrA2=True,,,True,,,False,,,True,Dim arrD(,)As Integer ,声明动态二维数组,arrD=1,2,3,4,5,6,7,8,9,10,11,12 ,二维数组,arrD,整体赋值,除了初始化和整体赋值,对动态数组必须用,redim,重新定义后才能正常使用。,6.2.2 数组重定义,1,数组的重定义,格式:,ReDim Preserve,数组名,(,上界,1,上界,2,),该语句用来重新定义数组,按定义的上界重新分配存储单元。当重新定义数组时,数组中的原有内容将被清除,但如果在,ReDim,语句中使用了,Preserve,选项,则不清除数组内容。,使用,ReDim,重新定义数组时需要注意下面几点:,与,Dim,、,Static,语句不同,,ReDim,语句是一个可执行语句,只能出现在过程中。,如果想改变数组大小又不想丢失原来的数据,只要在,ReDim,语句中包含,Preserve,关键字就可以。,对于已经使用,ReDim,重定义过的动态数组,可以使用,ReDim,再次重新定义,而且再定义的数组长度可以增加,也可以减小。,ReDim,只能用来重新定义数组的长度,不能重新定义数组的维数,也不能更改数组的数据类型。,对于多维数组,在使用,Preserve,关键字时,只能修改最后一维的大小。如果不使用,Preserve,关键字,数组每一维的大小都可以更改。,由于,VB.NET,中的数组都是动态的,即使声明时指定了数组上界,也可以使用,ReDim,重定义。例如:,Dim arrB(6)As Integer=1,2,3,4,5,6,7,ReDim Preserve arrB(8,),ReDim Preserve arrB(5),在,VB.NET,中所有的数组都是动态的,可以在任何时候重新定义数组的长度,即使不用,redim,,可以使用,New,关键字来对任何一个数组进行引用,并且重新定位。,Dim,X(),As,Single ,在类模块级声明,X=New,Single(20),相当于,redim x(20),2,数组的清除,格式为:,Erase,数组名,数组名,Erase,语句只能出现在过程级别,只能在过程中而不是在类或模块级释放数组。,Erase,语句等效于将,Nothing,分配给每一个数组元素。如果数组是数值型的,则把数组中的所有元素置为,0,;如果是字符串数组,则把所有元素置为空字符串。,6.2.3 与数组操作有关的几个系统函数,(1)IsArray(),函数,IsArray(varName),用来判断参数,varName,是否为数组,如果是数组,返回,True,,否则返回,False,。,(2)Ubound(),函数和,Lbound(),函数,格式:,UBound(,)LBound(,),这两个函数分别用来确定数组某一维的上界和下界值。其中,N,是可选的,一般是整型常量或变量,用于指定返回哪一维的上界或下界。,1,表示第一维,,2,表示第二维,以此类推。,N,的默认值是,1,,即,Ubound,(,aa,)与,UBound(aa,1),等价。,(3)Split(),函数,格式:,Split(,),该函数可将一个字符串以某个指定符号为分隔符,分离为若干个子字符串,赋值给一个一维数组。,例如:,Dim arrA()As String ,声明一个字符串数组,s=ab/cd/ef/ghijk ,以,/,为分隔符,arrA=Split(s,“/“),【例,6-5,】按照图,6-4,所示界面设计一个拆分字符串的应用程序,程序可以按照用户指定的分隔符拆分字符串并输出。,Private Sub Button1_Click(sender As Object,e As EventArgs)Handles Button1.Click,Dim arrS()As String,arrS=Split(TextBox1.Text,TextBox2.Text),For Each ss In arrS,TextBox3.Text=TextBox3.Text&ss&,Next,End Sub,6.3 对象数组,6.3.1 Object类型数组,在,VB6.0,中,如果声明数组时不指定数据类型,或指定,Variant,类型,称为变体数组,在,VB.NET,中,取代,Variant,的是,Object,类型。,Object,类型支持,.NET Framework,类层次结构中的所有类,并为派生类提供低级别服务,它是,.NET Framework,中所有类的最终基类。如果数组被声明为,Object,类型,可以用其保存不同类型的数据,该数组是对象数组。,在面向对象程序设计中,用户还以自定义复杂数据类型类,数组的数据类型也可是用户自定义类的对象。例如,如果用户自定义了表示人员的类,Person,,就可以用语句“,Dim arrP(10)As Person,”创建对象数组,arrP,。,【例,6-6,】分析下列程序运行结果,理解,Object,数组的使用。,Sub Main(),Dim arrA(4)As Object ,声明,Object,类型数组,arrA(4),arrA(0)=asdf arrA(0),被赋值为字符串,“asdf”,arrA(1)=123 arrA(1),被赋值为整数,123,arrA(2)=45.6 arrA(2),被赋值为浮点数,45.6,arrA(3)=True arrA(3),被赋值为布尔型数据,True,arrA(4)=#3/2/2016#arrA(4),被赋值为日期类型数据,For i=0 To 4,Console.Write(arrA(i),Console.Write(),Console.WriteLine(arrA(i).GetType),输出数组元素的数据类型,Next,Console.Read(),End Sub,【例,6-7,】编写一个应用程序,界面如图,6-6,所示。要求输入几个学生成绩后,要将文本框中字符串拆分成数组,单击“计算平均值”按钮可以计算平均值,并显示在下面的文本框中。,按钮的单击事件代码为:,Private Sub Button1_Click(sender As Object,e As EventArgs)Handles Button1.Click,Dim sum As Integer=0,Dim Score()As Object,Score=Split(TextBox1.Text,),Dim n As Integer=Score.Length,For i=0 To n-1,sum=sum+Score(i),Next,TextBox2.Text=n&,个学生平均成绩,=&Int(sum/n*10+0.5)/10,End Sub,6.3.2 System.Array类及其成员,Array,类是公共语言运行库中所有数组的基类。在,VB.NET,中,所有的数组都是从,Array,类继承而来,数组被作为一个对象来处理,任何数组都可以访问,Array,类的方法和属性。数组中的一个元素就是,Array,中的一个值。,Array,的长度是它可包含的元素总数。,Array,的秩是数组的维数。,Array,中某一维的下限是数组该维度的起始索引,多维数组的各个维度可以有不同的界限。,1.System.Array类的常用属性,属,性,说,明,IsFixedSize,获取指示,Array,是否具有固定大小的值。,IsReadOnly,获取指示,Array,是否为只读的值。,Length,获取,Array,的所有维度中的元素总数。,Rank,获取,Array,的秩(也就是维数)。,表,6.1 Array,类的常用属性及其说明,方,法,说,明,BinarySearch,使用二进制搜索算法在一维的排序,Array,中搜索值。,Clear,将,Array,中的一系列元素设置为零、,false,或空引用(即:,Nothing,),具体操作时设定值取决于元素类型。,Copy,将一个,Array,的一部分复制到另一个,Array,中,并根据需要执行强制类型转换和装箱。,CopyTo,将当前一维,Array,的所有元素复制到指定的一维,Array,中(从指定的目标,Array,索引开始)。,GetLength,获取,Array,的指定维度中的元素数。,GetLowerBound,获取,Array,中指定维度的下限。,GetUpperBound,获取,Array,的指定维度的上限。,GetValue,获取当前,Array,中指定元素的值。,IndexOf,返回一维,Array,或部分,Array,中某个值的第一个匹配项的索引,LastIndexOf,返回一维,Array,或部分,Array,中某个值的最后一个匹配项的索引。,Reverse,反转一维,Array,或部分,Array,中元素的顺序。,Sort,对一维数组各元素进行升序排列,SetValue,将当前,Array,中的指定元素设置为指定值。,表,6.2 System.Array,类的常用方法及其说明,(1),复制数组元素方法,Copy,和,CopyTo,方法都用于进行一维数组复制可以将源数组的全部或部分元素复制到目标数组指定位置,具体格式为:,格式一:源数组名,.CopyTo(,目标数组名,目标数组起始位,),格式二:,Array.Copy(,源数组,源数组起始位,目标数组,目标数组起始位,长度),(2),克隆数组,源数组名,.Clone(),:该方法可以将源数组完全复制,返回一个新的对象。,例如:,Dim arrA()As Integer=1,2,3,4,5,Dim arrC()As Integer,arrC=arrA.Cl
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服