ASP中定义数组方法分享
作者: 来源: 发布时间:2011-6-25 11:18:58 点击:
例如,虽然可以将一个声明为整型的变量赋给一个声明为长整型的变量而不会产生任何问题,但是将一个长整型变量赋给一个整型变量就很容易导致溢出错误。除了遵守有关数据类型变量之间赋值时的规则外,数组赋值还要遵从另外一些规则,包括数组维数,每一维的大小,以及数组是固定的还是动态的。
①维数、数据类型不同的数组赋值考虑的几个因素
l 赋值符左边的数组类型:固定数组 (Dim x(1 to 10) As Integer) 或者动态数组 (Dim x() As Integer)。
l 赋值符左边数组的维数是否和赋值符右边数组的维数匹配。
l 赋值符两边数组的每一维的数组元素个数是否匹配。即使数组的声明不同,维数也可能匹配。比如一个数组的每一维元素从 0 开始编号而另一个则从 1 开始,维数也可能匹配。
l 赋值符两边所有元素的数据类型必须是相容的。这些规则和变量赋值的规则是一致的。
表3-6显示了这些因素的影响:
数组赋值时的错误可能发生在编译时,也可能发生在运行时(例如,如果数据类型不能强制转换或赋值试图重新声明 (ReDim) 一个静态数组)。设计程序时要添加错误处理以确保数组在赋值之前是匹配的。
②编写返回数组的函数
从一个函数返回一组值是可能实现的。例如,从一个函数返回一组字节而不必将其先转换为一个字符串然后再转换回来。
下面是一个使用返回字节数组的函数的简单示例:
Private Sub Form_Load()
Dim b As Byte
Dim i As Integer
Dim ReturnArray() As Byte
b = Cbyte(54)
ReturnArray() = ArrayFunction(b) ’调用函数
For i = Lbound(ReturnArray) To Ubound(ReturnArray)
Msgbox ReturnArray(i) ’通过弹出消息框循环显示数组值
Next
End Sub
Public Function ArrayFunction(b As Byte) As Byte()
Dim x(2) As Byte
x(0) = b
x(1) = b + CByte(200)
x(2) = b + b
ArrayFunction = x ’返回结果为数组x
End Function
在运行以上示例后, ReturnArray() 是一个三元素数组,其中包含了分配给 ArrayFunction 中数组的值。ArrayFunction 语句将一个数组作为参数传递;且数组的数据类型必须和函数的数据类型相同(在本例中是字节)。因为这是一个函数调用,传递数组时不必带括号。
注意:
1.尽管可以通过赋值给另一个数组(ArrayFunction = x())来返回一个数组,但出于性能方面的考虑,并不推荐使用这种方法。
2.必须为返回数组的函数指定一个类型,这个类型可以是 Variant。这样一来,Function X() As Variant() 是有效的而 Function X() As () 将失败。
3.当调用一个返回数组的函数时,用来保存返回值的变量也必须是一个数组,而且其数据类型必须和函数返回类型相同,否则将显示一个“类型不匹配”的错误。
①维数、数据类型不同的数组赋值考虑的几个因素
l 赋值符左边的数组类型:固定数组 (Dim x(1 to 10) As Integer) 或者动态数组 (Dim x() As Integer)。
l 赋值符左边数组的维数是否和赋值符右边数组的维数匹配。
l 赋值符两边数组的每一维的数组元素个数是否匹配。即使数组的声明不同,维数也可能匹配。比如一个数组的每一维元素从 0 开始编号而另一个则从 1 开始,维数也可能匹配。
l 赋值符两边所有元素的数据类型必须是相容的。这些规则和变量赋值的规则是一致的。
表3-6显示了这些因素的影响:
数组赋值时的错误可能发生在编译时,也可能发生在运行时(例如,如果数据类型不能强制转换或赋值试图重新声明 (ReDim) 一个静态数组)。设计程序时要添加错误处理以确保数组在赋值之前是匹配的。
②编写返回数组的函数
从一个函数返回一组值是可能实现的。例如,从一个函数返回一组字节而不必将其先转换为一个字符串然后再转换回来。
下面是一个使用返回字节数组的函数的简单示例:
Private Sub Form_Load()
Dim b As Byte
Dim i As Integer
Dim ReturnArray() As Byte
b = Cbyte(54)
ReturnArray() = ArrayFunction(b) ’调用函数
For i = Lbound(ReturnArray) To Ubound(ReturnArray)
Msgbox ReturnArray(i) ’通过弹出消息框循环显示数组值
Next
End Sub
Public Function ArrayFunction(b As Byte) As Byte()
Dim x(2) As Byte
x(0) = b
x(1) = b + CByte(200)
x(2) = b + b
ArrayFunction = x ’返回结果为数组x
End Function
在运行以上示例后, ReturnArray() 是一个三元素数组,其中包含了分配给 ArrayFunction 中数组的值。ArrayFunction 语句将一个数组作为参数传递;且数组的数据类型必须和函数的数据类型相同(在本例中是字节)。因为这是一个函数调用,传递数组时不必带括号。
注意:
1.尽管可以通过赋值给另一个数组(ArrayFunction = x())来返回一个数组,但出于性能方面的考虑,并不推荐使用这种方法。
2.必须为返回数组的函数指定一个类型,这个类型可以是 Variant。这样一来,Function X() As Variant() 是有效的而 Function X() As () 将失败。
3.当调用一个返回数组的函数时,用来保存返回值的变量也必须是一个数组,而且其数据类型必须和函数返回类型相同,否则将显示一个“类型不匹配”的错误。
Tags:
ASP中定义数组方法分享上一篇:关于ASP组件上传的三种机制 下一篇: windows 2000中的IIS网站安全构建指南
[收藏此文章]