VisualBasic变量、常数和数据类型及过程概述四

2016-02-19 13:33 7 1 收藏

图老师小编精心整理的VisualBasic变量、常数和数据类型及过程概述四希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

  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中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。
  如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。
  要创建动态数组,请按照以下步骤执行:
  1.(如果希望数组为公用数组,则)用Public语句声明数组,或者(如果希望数组为模块级,则)在模块级用Dim语句声明数组,或者(如果希望数组为局部数组,则)在过程中用Static或Dim语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。
   DimDynArray()
  2.用ReDim语句分配实际的元素个数。
   ReDimDynArray(X 1)
  ReDim语句只能出现在过程中。与Dim语句、Static语句不同,ReDim语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。ReDim语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个ReDim语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
  ReDimDynArray(4to12)
  例如,用第一次声明在模块级所建立的动态数组Matrix1:
  DimMatrix1()AsInteger
  然后,在过程中给数组分配空间:
  SubCalcValuesNow()
  .
  .
  .
    ReDimMatrix1(19,29)
  EndSub
  这里的ReDim语句给Matrix分配一个20×30的整数矩阵(元素总大小为600)。还有一个办法,用变量设置动态数组的边界:
  ReDimMatrix1(X,Y)
  注意您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在Unicode平台上的字节数是它在非Unicode平台上的两倍。
  
  保留动态数组的内容
  每次执行ReDim语句时,当前存储在数组中的值都会全部丢失。VisualBasic重新将数组元素的值置为Empty(对Variant数组)、置为0(对Numeric数组)、置为零长度字符串(对String数组)或者置为Nothing(对于对象的数组)。
  在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有Preserve关键字的ReDim语句就可做到这点。例如,使用UBound函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:
  ReDimPreserveDynArray(UBound(DynArray) 1)
  在用Preserve关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:
  ReDimPreserveMatrix(10,UBound(Matrix,2) 1)
  而不可这样编程:
  ReDimPreserveMatrix(UBound(Matrix,1) 1,10)
  详细信息关于动态数组的更详细信息,请参阅语言参考中的“ReDim函数”。关于对象数组,请参阅第九章“用对象编程”。
  

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)->

来源:http://www.tulaoshi.com/n/20160219/1604645.html

延伸阅读
标签: ASP
ASP只有一种数据类型那就是"variant "。它是一种特殊的数据类型能够根据它的使用表示很多不同种类的信息。因为它是ASP中唯一的数据类型,它也是ASP中所有函数返回值的唯一类型。它很简单的,"variant"数据类型能够表示数字或者是字符串。当你在ASP程序中把它当做是数字,它就自动转化为"Numeric",如果用它为字符串,它也同样就是"String"了。也...
VBScript只有一种数据类型,称为Variant。Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。 最简单的Variant可以包含数字或字符串信息。Variant用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处...
中文Access2000速成教程--1.8定义 ACCESS集锦 Access新手来看:Access的特点、概 要精通ACCESS需掌握的内容 用Access 2000进行班级管理 一篇详细讲述mysql和access区别的 中文Access2000速成教程--1.1使用 Access使用查询 Access 数据库安全攻防策略 Access命令行参数 文本 nvarchar(n) 备注 ntext 数字(长整型) int 数字(整型) smallint ...
标量(scalar)数据类型 标量(scalar)数据类型没有内部组件,他们大致可分为以下四类: . number . character . date/time . boolean 表1显示了数字数据类型;表2显示了字符数据类型;表3显示了日期和布尔数据类型。 表1 Scalar Types:Numeric Datatype Range Subtypes description BINARY_INTEGER...
标签: Java JAVA基础
     一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问题等。下面笔者就开发中的一些体会介绍给大家。     我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型...

经验教程

789

收藏

32
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部