数组

数组是同一数据类型的一组变量的集合。

定义数组语法为:

Dim 数组名(索引上限) As 数据类型

例如:

Dim Names(3) As String

表示定义了一个字符型(String)数组,数组名为“Names”,数组的索引从0开始,所以该数组包括4个字符型变量(我们称之为数组元素),分别是:

Names(0), Names(1), Names(2), Names(3)

数组有一个Length属性,用于返回数组的长度。

下面是一段完整的代码,用于测试数组的基本特性,请复制到命令窗口执行:

Dim Names(3) As String
Names
(0) = "杨国辉"
Names
(1) = "柯迎"
Names
(2) = "陈绍月"
Names
(3) = "朱志欣"
Output
.Show(Names(1)) '在命令窗口显示第二个数组元素的值。
Output
.Show(Names.Length) '在命令窗口显示数组的长度。

可以在定义数组的时候,直接给数组元素赋值,例如:

Dim Values() As Integer = {1,3,5}

上面的代码定义了一个整数型数组,数组包括三个元素,分别是1、3、5。

再例如:

Dim s1() As String = {"中国","美国","日本","俄罗斯"}

上面的代码定义了一个字符型数组,数组包括四个元素。
如果采用直接赋值的方式定义数组,不需要指定数组的索引上限,此时索引上限由值的个数确定。

可以在定义数组之后,再给数组批量赋值:

Dim s1() As String
s1 = New
String() {"中国","美国","日本","俄罗斯"}

Foxtable提供了一个类Array,这个类有大量的共享方法用于对数组进行操作,其中比较常用的有:

名称 说明
IndexOf 获取某个值在数组中第一次出现的位置,如果未出现,返回-1
LastIndexOf 获取某个值在数组中最后一次出现的位置,如果未出现,返回-1
Sort 对数组排序。
Reverse 反转数组顺序。

请在命令窗口执行以下代码,用以测试上述方法:

Dim vals() As Integer = {1,3,5,2,4,5,6}
Output
.Show(Array.Indexof(Vals, 5))
Output
.Show(Array.LastIndexof(Vals, 5))
Array
.Sort(Vals)
Output
.Show(Array.Indexof(vals, 5))
Array
.Reverse(vals)
Output
.Show(Array.Indexof(vals, 5))

得到的输出结果依次为2541,注意索引从0开始,所以1其实表示位置2

Sort方法可以对两个数组进行联动排序,下面用一个例子来说明,假定一个数组存储了学生姓名,一个数组存储了学生分数,元素位置一一对应,希望按分数高低排序学生姓名,参考代码:

Dim nms() As String = {"A","B","C"} '学生姓名
Dim
vals() As Integer = {8, 6, 7} '对应分数
Array
.Sort(vals, nms) '第一个数组为排序数组,第二个数组跟随第一个数组排序
Output
.Show(nms(0) & "=" & vals(0))
Output
.Show(nms(1) & "=" & vals(1))
Output
.Show(nms(2) & "=" & vals(2))

在命令窗口执行上述代码,输出结果依次为:B=6C=7A=8,显示两个数组都进行了正确的排序。


本页地址:http://www.foxtable.com/webhelp/topics/0216.htm