设置首页  |   加入收藏  |  联系我们   
您的位置: 主页>程序设计>ViualBasic>正文
VisualBasic变量、常数和数据类型及过程概述四
文章来源:  编辑:  发布时间:2007-11-27

    Variant变量中存储的Objects
    可以将Objects存储在Variant变量中。当需要高效地处理包括Objects在内的各种数据类型时,这可能十分有用。例如,一个数组中的所有元素都必须具有相同的数据类型。将数组的数据类型设置成Variant就可将Objects连同其它数据类型一起存入同一个数组中。

    数组
    如果有过用其它语言编程的经历,那么想必会熟悉数组的概念。由于有了数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组有上界和下界,数组的元素在上下界内是连续的。因为VisualBasic对每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。
    注意这一部分讨论的数组是程序中声明的变量数组。它们不同于控件数组,控件数组是在设计时通过设置控件的Index属性规定的。变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。
    一个数组中的所有元素具有相同的数据类型。当然,当数据类型为Variant时,各个元素能够包含不同种类的数据(对象、字符串、数值等等)。可以声明任何基本数据类型的数组,包括用户定义的类型(请参阅第八章“再论编程”中的“创建自己的数据类型”)和对象变量(请参阅第九章“用对象编程”)。
    在VisualBasic中有两种类型的数组:固定大小的数组——它总是保持同样的大小,以及在运行时大小可以改变的动态数组。在本章后面的“动态数组”中将要详细讨论动态数组。

    声明固定大小的数组
    有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:
     建立公用数组,在模块的声明段用Public语句声明数组。
     建立模块级数组,在模块的声明段用Private语句声明数组。
     建立局部数组,在过程中用Private语句声明数组。

    设定上下界
    声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过Long数据类型的范围(-2,147,483,648到2,147,483,647)。例如,下列数组声明可出现在模块的声明段:
    DimCounters(14)AsInteger      '15个元素。
    DimSums(20)AsDouble         '21个元素。
    为建立公用数组,直接用Public取代Dim。
    PublicCounters(14)AsInteger
    PublicSums(20)AsDouble
    在过程之中同样的声明使用Dim:DimCounters(14)AsIntegerDimSums(20)AsDouble第一个声明建立了一个有15个元素的数组,其索引号从0到14。第二个声明建立了一个有21个元素的数组,其索引号从0到20。缺省的下界为0。
    为了规定下界,用关键字To显式提供下界(为Long数据类型):
    DimCounters(1To15)AsInteger
    DimSums(100To120)AsString
    在前述声明中,Counters的索引值范围从1到15,而Sums的索引值范围从100到120。

    包含其它数组的数组
    有可能建立Variant数据类型数组,并与不同数据类型的数组共居一处。以下代码建立两个数组,一个包含整数,而另一个包含字符串。然后声明第三个Variant数组,并将整数和字符串数组放置其中:
    PrivateSubCommand1_Click()
      DimintXAsInteger     '声明计数器变量。
      '声明并放置整数数组。
      DimcountersA(5)AsInteger
        ForintX=0To4
          countersA(intX)=5
        NextintX
      '声明并放置字符串数组。
      DimcountersB(5)AsString
        ForintX=0To4
          countersB(intX)="hello"
        NextintX
      DimarrX(2)AsVariant    '声明拥有两个成员的新数组。
        arrX(1)=countersA()  '将其它数组移居到数组。
        arrX(2)=countersB()
        MsgBoxarrX(1)(2)    '显示每一个数组的成员。
        MsgBoxarrX(2)(3)
     EndSub

    多维数组
    有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的X、Y坐标。这时应该用多维数组存储值。可用VisualBasic声明多维数组。例如,下面的语句声明了一个过程内的10×10的二维数组。
    StaticMatrixA(9,9)AsDouble
    可用显式下界来声明两个维数或两个维数中的任何一个:
    StaticMatrixA(1To10,1To10)AsDouble
    可以将所有这些推广到二维以上的数组。例如:
    DimMultiD(3,1To10,1To15)
    这个声明建立了三维数组,大小为4×10×15。元素总数为三个维数的乘积,为600。
    注意在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用Variant数组时更要格外小心,因为它们需要更大的存储空间。

    用循环操作数组
    可以用For循环嵌套有效的处理多维数组。例如,在MatrixA中基于每个元素在数组中的位置为其赋值:
    DimIAsInteger,JAsInteger
    StaticMatrixA(1To10,1To10)AsDouble
    ForI=1To10
       ForJ=1To10
         MatrixA(I,J)=I*10 J
       NextJ
    NextI
    详细信息关于循环的详细信息,请参阅本章后面的“循环结构”部分。

    动态数组
    数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。
    动态数组就可以在任何时候改变大小。在VisualBasic中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。

 
Tags:过程 概述 类型 数据 变量 声明 一个 元素 建立 可以

Google
 
上一篇: VisualBasic变量、常数和数据类型及过程概述二   下一篇: 文件系统控件的使用
【返回顶部】 【打印】 【大】 【中】 【小】 【关闭】

 我来说两句
用户名: 新注册) 密码: 匿名评论 [论坛讨论]
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 相关文章
 热门文章

 
版权所有  2005-2006  Linux集中营  闽ICP备07500055号