文中提到的数组是VisualBasic中数组的定义,对asp编程有一定的参考价值。文中的样例代码非常详细,感兴趣的朋友可以参考一下。
数组是有序数据的集合。数组中的元素可能不属于同一数据类型。统一的数组名称和下标用于唯一标识数组中的元素。更改一个元素不会影响其他元素。数组的下标是有界的,分为下界和上界。数组可以由Dim、Private、Public或Static声明,它们的语法格式是相同的。下面只介绍用Dim声明数组的方法。
1数组的定义与声明
数组的定义语法如下:
Dim数组名称([[下标下限到]下标上限])[作为数据类型]
例如(假设当前模块中数组的默认下限为0)):
Dim A(10) As Integer
数组名是a,这个数组的下标下限是0,下标上限是10。有11个整数类型的元素,从A(0),A(1)到A(10)。
Dim B(1 To 20) As Integer
数组名是b,这个数组的下标下限是1,下标上限是20。有20个整数类型的元素,从B(1)到B(20)。
Dim DayArray(50)
指示DayArray是具有51个索引元素(从0到50)的变量数组。
Dim Matrix(3, 4) As Integer
指示Matrix是一个二维整数数组。
Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double
指示MyMatrix是一个三维双精度数组,具有显式指定的上限和下限。
Dim BirthDay(1 To 10) As Date
生日是一个索引从1到10的日期数组。
2Option Base 语句
Option语句在模块级用于声明数组下标的默认下限。
option语句的语法如下:
选项库{0 | 1}
注意:默认情况下,数组的下限是0,所以不需要使用Option Base语句。如果此语句用于指定数组下限为1,则必须在模块的数组声明之前使用Option Base语句。
注意:
(1)dim、Private、Public、ReDim和Static语句中的To子句提供了一种更灵活的方法来控制数组的下标。但是,如果没有用To子句显式指定下限,可以使用Option Base将默认下限设置为1。由Array函数创建的数组的下限也由Option Base语句指定的下限确定,除非数组由类型库的名称限定(如VBA。Array),如果是这样,数组函数创建的数组的下界不受Option Base的影响。
(2) Option Base语句只影响位于包含该语句的模块中的数组的下限。
关于数组声明的几点说明:
数组名的命名规则与变量名的命名规则相同。
数组名是用圆括号括起来的,不是方括号,和C语言不同。
下标的下限不得大于其上限。
变量名或常量名(和实数)可以作为下标的边界。当光标的边界是常量名时,数组的大小是固定的;当光标的边界是变量名时,数组的大小可以动态定义,即数组的大小取决于程序运行过程中变量的值。所以VB中的数组可以分为静态数组和动态数组两种。
3静态数组
静态数组是一个指数群。元素的数量是固定的,也就是说,它们占用的内存空间是固定的。根据固定大小数组维数的不同,可以分为一维数组和多维数组。
声明多维数组的语法格式为:
Dim数组名称([下标边界列表])[作为数据类型]
下标边界的定义形式:[下标下界到]下标上界
下标边界列表是指由逗号分隔的数组的每个维度的下标边界,即
[下标下限至]下标上限,[下标下限至]下标上限,[下标下限至]下标上限
(第一维)(第二维)(第n维)
当n=1时,该数组称为一维数组;当n=2时,该数组称为二维数组;同理,当n=m时,该数组称为m维数组。
这里有一个使用一维数组的例子。
声明一个长度为51的字符串数组,FriendsName
Dim FriendsName(50)作为字符串
声明一个长度为11的全局整数数组类
作为整数的公共类(10)
一维数组中的元素个数为(上限-下限1)。
您可以使用循环语句将初始值赋给数组,例如:
将I标注为整数
使用For I=0到11 '循环语句和控制程序流程
C(I)=I
接下来我
如果未显式指定下标下限,则数组的下标下限由Option Base语句控制。如果没有Option Base语句,则下限默认为0。
数组的维数不限于2。在VB中,可以扩展到60。实际上,三维以上的阵列很少应用。定义多维数组时,只需要一个Dim语句来指定数组的所有下标边界。使用多维数组可以很容易地表示一些有意义的统计数据。例如:
作为货币的模糊利润(16,10,12)
这个利润数组可以用商店名称、部门和月份作为参数来表示百货商店的利润。例如,Profit(2,8,11)表示第二个分支的第八个部门在11月的利润。
4动态数组
有时候,在使用数组之前,无法知道数组有多大才能满足实际需要。当然,数组的大小可以定义为足够大,以满足任何实际应用的需要。这种方法效率很低(浪费大量内存空间)。如果使用动态数组,可以在程序运行时根据实际需要精确定义数组的大小。
声明数组时,数组被声明为动态数组,而没有给出维度列表。例如:
Dim MyArry()为整数
在使用动态数组之前,必须使用ReDim语句重新定义它。例如,前面声明的数组MyArry可以用下面的语句定义为一个动态二维数组。
雷迪姆米亚里(10,10)
还可以通过重复执行ReDim语句来多次定义动态数组。使用ReDim可以定义的最大维数是60。ReDim语句可以更改数组中每个维度的元素数量,但不能更改维度。下面是ReDim语句的一个标准应用示例。
“Dimmyarry () as single”声明了一个动态数组。
Redim Myarry (30,20,10)'重新定义阵列
Redim Myarry (50,23,21)'重新定义数组。
ReDim的语法与Dim的语法相同。此外,它还具有选项Preserve关键字:
重新改进数组名称([[下标下限到]下标上限])[作为数据类型]
例如:
雷迪姆米亚里(50,23,21)
ReDim Preserve MyArry(50,23,50)
010-5900使用ReDim时,重新定义数组会使所有数组元素的值消失,而使用Preserve可以保留数据。但是,使用Preserve只能在更改数组最后一个维度的大小时保留数组的数据。对于一维数组,会保留所有数据,而对于多维数组,只能改变最后一个维度的大小来保留所有数组数据,否则会出错。
注意:
LBound函数和Ubound函数都返回长整型数据,前者得到指定数组维数可用的最小下标,后者得到最大下标。他们的语法是:
LBound(数组名[,指定维度])
UBound(数组名[,指定维度])
阵列名称是必需的。的指定维度是可选的,指示返回指定维度的下限。1表示第一维度,2表示第二维度,依此类推。如果指定的维度被省略,默认情况下将为1。
5LBound 函数和UBound 函数
Dim A(1到100,3,-3到4) As Integer '定义了一个三维数组,假设Option Base语句不改变数组下限的默认值。
对数组a使用Lbound和ubound函数,返回值列表如下
所有维度的默认下限取决于Option Base语句的设置。可以看出,对一个数组使用LBound函数和UBound函数,可以用来确定一个数组中元素的个数。
对于那些维数由声明中的To子句设置的数组,它们可以使用任意整数作为下限,而不受Option Base语句的限制。
关于如何使用LBound 函数与 UBound 函数可参见下例:
尽管数组最常用于存储变量组,但它们在其他方面也很有用。您可以将一个数组的内容分配给另一个数组,创建一个返回数组的函数,并创建一个返回数组的属性。在许多情况下,这些技术可以提高应用程序的性能。
正如您可以将一个变量的值赋给另一个变量,例如StrA=StrB,您也可以将一个数组的内容赋给另一个数组。例如,将一个单字节数组从一个位置复制到另一个位置。它可以通过一次复制一个字节来实现。该计划如下:
子字节拷贝(oldCopy()作为字节,newCopy()作为字节)
参数oldCopy()是源数组,newCopy()是目标数组。
将I标注为整数
重定义新副本(lbound(旧副本)到ubound(旧副本))'重定义动态数组。
For I=lbound(旧副本)到ubound(旧副本)'循环赋值
newCopy(i)=oldCopy(i)
然后
末端接头
更有效和简单的方法是将一个数组直接分配给另一个数组:
子字节拷贝(oldCopy()作为字节,newCopy()作为字节)
参数oldCopy()是源数组,newCopy()是目标数组。
“NewCopy=oldCopy”使用数组直接赋值。
末端接头
关于变量赋值,有一些规则要记住。例如,虽然声明为整数的变量可以毫无问题地赋给声明为长整数的变量,但将长整数变量赋给整数变量很容易导致溢出错误。除了遵循关于在数据类型变量之间赋值的规则之外,数组赋值还应该遵循其他规则,包括数组维数、每个维数的大小以及数组是固定的还是动态的。
为不同维度和数据类型的数组赋值时要考虑的几个因素
1.赋值器左侧的数组类型:固定数组(Dim x(1到10)为整数)或动态数组(Dim x()为整数)。
2.求值器左侧数组的维数是否与求值器右侧数组的维数匹配。
3.赋值器两侧数组的每个维度中的数组元素个数是否匹配。即使数组的声明不同,维度也可能匹配。例如,数组的每个维度元素从0开始编号,另一个从1开始编号,维度也可以匹配。
4.求值器两端的所有元素的数据类型必须兼容。这些规则与变量赋值的规则是一致的。
分配数组时的错误可能发生在编译时或运行时(例如,如果数据类型不能强制转换或分配试图重新定义静态数组)。设计程序时,应该添加错误处理,以确保数组在赋值前是匹配的。
写一个返回数组的函数。
从一个函数返回一组值是可能的。例如,从函数中返回一组字节,而没有先将其转换为字符串,然后再转换回来。
下面是一个使用返回字节数组的函数的简单示例:
私有子窗体_Load()
将b调成字节
将I标注为整数
Dim ReturnArray()作为字节
b=Cbyte(54)
ReturnArray()=ArrayFunction(b)'调用函数
For i=Lbound(ReturnArray)至Ubound(ReturnArray)
MSOX RETURN ARRAY (i)'通过弹出消息框循环显示数组值。
然后
末端接头
公共函数ArrayFunction(b As Byte) As Byte()
Dim x(2)为字节
x(0)=b
x(1)=b千字节(200)
x(2)=b b
Array=x '返回一个数组x。
结束功能
运行上述示例后,ReturnArray()是一个三元素数组,包含ArrayFunction中分配给该数组的值。array语句将数组作为参数传递;并且数组的数据类型必须与函数的数据类型相同(本例中为字节)。因为这是一个函数调用,所以在传递数组时不必使用括号。
注意:
1.虽然可以通过将一个值赋给另一个数组(ArrayFunction=x())来返回一个数组,但出于性能原因,不建议使用这种方法。
2.您必须为返回数组的函数指定一个类型。这种类型可以是变体。这样,函数X()作为变量()有效,函数X()作为()将失败。
3.调用返回数组的函数时,用于保存返回值的变量也必须是数组,其数据类型必须与函数返回的类型相同,否则会显示“类型不匹配”错误。
以上是边肖分享的ASP定义数组的方法。感兴趣的朋友可以参考一下。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。