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

唐吉珂楠vs德沙

唐吉珂楠vs德沙

2016-02-19 17:14

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是Visual Basic变量、常数和数据类型及过程概述四,一起来学习了解下吧!

  Variant 变量中存储的 Objects

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

  数组

  如果有过用其它语言编程的经历,那么想必会熟悉数组的概念。由于有了数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组有上界和下界,数组的元素在上下界内是连续的。因为 Visual Basic对每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。

  注意 这一部分讨论的数组是程序中声明的变量数组。它们不同于控件数组,控件数组是在设计时通过设置控件的 Index 属性规定的。变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。

  一个数组中的所有元素具有相同的数据类型。当然,当数据类型为 Variant时,各个元素能够包含不同种类的数据(对象、字符串 、数值等等)。可以声明任何基本数据类型的数组,包括用户定义的类型(请参阅第八章再论编程中的创建自己的数据类型)和对象变量(请参阅第九章用对象编程 ) 。

  在Visual Basic中有两种类型的数组:固定大小的数组它总是保持同样的大小,以及在运行时大小可以改变的动态数组。在本章后面的动态数组中将要详细讨论动态数组。

  声明固定大小的数组

  有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:

  建立公用数组,在模块的声明段用 Public 语句声明数组。

  建立模块级数组,在模块的声明段用 Private 语句声明数组。

  建立局部数组,在过程中用 Private 语句声明数组。

  设定上下界

  声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过 Long数据类型的范围(-2,147,483,648 到 2,147,483,647)。例如,下列数组声明可出现在模块的声明段:

  Dim Counters (14) As Integer      '15 个元素。

  Dim Sums (20) As Double         '21 个元素。

  为建立公用数组,直接用 Public 取代 Dim。

  Public Counters (14) As Integer

  Public Sums (20) As Double

  在过程之中同样的声明使用 Dim:Dim Counters (14) As IntegerDim Sums (20) As Double第一个声明建立了一个有 15 个元素的数组,其索引号从 0 到 14 。第二个声明建立了一个有 21 个元素的数组,其索引号从 0 到 20 。缺省的下界为 0。

  为了规定下界,用关键字 To 显式提供下界(为 Long 数据类型):

  Dim Counters (1 To 15) As Integer

  Dim Sums (100 To 120) As String

  在前述声明中,Counters 的索引值范围从 1 到 15,而 Sums 的索引值范围从 100 到 120。

  包含其它数组的数组

  有可能建立 Variant 数据类型数组,并与不同数据类型的数组共居一处。以下代码建立两个数组,一个包含整数,而另一个包含 字符串。然后声明第三个 Variant 数组,并将整数和字符串数组放置其中:

  

    Private Sub Command1_Click ()      Dim intX As Integer     '声明计数器变量。      '声明并放置整数数组。      Dim countersA (5) As Integer        For intX = 0 To 4          countersA (intX) = 5        Next intX      '声明并放置字符串数组。      Dim countersB (5) As String        For intX = 0 To 4          countersB (intX) = "hello"        Next intX      Dim arrX (2) As Variant    '声明拥有两个成员的新数组。        arrX (1) = countersA ()  '将其它数组移居到数组。        arrX (2) = countersB ()        MsgBox arrX (1) (2)    '显示每一个数组的成员。        MsgBox arrX (2) (3)     End Sub

  多维数组

  有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的 X、Y 坐标。这时应该用多维数组存储值。可用 Visual Basic 声明多维数组。例如,下面的语句声明了一个过程内的10×10的二维数组。

  Static MatrixA (9, 9) As Double

  可用显式下界来声明两个维数或两个维数中的任何一个:

  Static MatrixA (1 To 10, 1 To 10) As Double

  可以将所有这些推广到二维以上的数组。例如:

  Dim MultiD (3, 1 To 10, 1 To 15)

  这个声明建立了三维数组,大小为 4 × 10 × 15。元素总数为三个维数的乘积,为 600。

  注意 在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant 数组时更要格外小心,因为它们需要更大的存储空间。

  用循环操作数组

  可以用 For 循环嵌套有效的处理多维数组。例如,在 MatrixA 中基于每个元素在数组中的位置为其赋值:

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

  

    Dim I As Integer, J As Integer    Static MatrixA(1 To 10, 1 To 10) As Double    For I = 1 To 10       For J = 1 To 10         MatrixA (I, J) = I * 10 + J       Next J    Next I

  详细信息 关于循环的详细信息,请参阅本章后面的循环结构部分。

  动态数组

  数组到底应该有多大才合适,有时可能不得而知。所以希望能够在运行时具有改变数组大小的能力。

  动态数组就可以在任何时候改变大小。在 Visual Basic 中,动态数组最灵活、最方便,有助于有效管理内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。

  如果不用动态数组,就要声明一个数组,它的大小尽可能达到最大,然后再抹去那些不必要的元素。但是,如果过度使用这种方法,会导致内存的操作环境变慢。

  要创建动态数组,请按照以下步骤执行:

  1. (如果希望数组为公用数组,则)用 Public 语句声明数组,或者(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。

  Dim DynArray ()

  2. 用 ReDim 语句分配实际的元素个数。

  ReDim DynArray (X + 1)

  ReDim 语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。

  ReDim DynArray (4 to 12)

  例如,用第一次声明在模块级所建立的动态数组 Matrix1:

  Dim Matrix1 () As Integer

  然后,在过程中给数组分配空间:

  

    Sub CalcValuesNow ()    .    .    .        ReDim Matrix1 (19, 29)    End Sub

  这里的 ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:

  ReDim Matrix1 (X, Y)

  注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 Unicode 平台上的字节数是它在非Unicode 平台上的两倍。

  保留动态数组的内容

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

  每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。VisualBasic 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对Numeric 数组)、置为零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。

  在为新数据准备数组,或者要缩减数组大小以节省内存时,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve关键字的 ReDim 语句就可做到这点。例如,使用 UBound 函数引用上界,使数组扩大、增加一个元素,而现有元素的值并未丢失:

  ReDim Preserve DynArray (UBound (DynArray) + 1)

  在用 Preserve 关键字时,只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。所以可这样编程:

  ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)

  而不可这样编程:

  ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)

  详细信息 关于动态数组的更详细信息,请参阅语言参考中的ReDim 函数。关于对象数组,请参阅第九章用对象编程。

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Visual Basic变量、常数和数据类型及过程概述四

Visual Basic变量、常数和数据类型及过程概述

编程语言 网络编程
Visual Basic变量、常数和数据类型及过程概述

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Visual Basic变量、常数和数据类型及过程概述二

编程语言 网络编程
Visual Basic变量、常数和数据类型及过程概述二

Visual Basic变量、常数和数据类型及过程概述六

编程语言 网络编程
Visual Basic变量、常数和数据类型及过程概述六

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Visual Basic变量、常数和数据类型及过程概述五

编程语言 网络编程
Visual Basic变量、常数和数据类型及过程概述五

Visual Basic变量、常数和数据类型及过程概述三

编程语言 网络编程
Visual Basic变量、常数和数据类型及过程概述三

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

一个可重用的RAS类

一个可重用的RAS类

Visual Basic 控件的使用

Visual Basic 控件的使用
下拉加载更多内容 ↓