在一个程序中,同一数组只能用Dim语句定义一次。但有时可能需要清除数组的内容或对数组重新定义,这可以用:Erase语句来实现。
格式:Erase(数组名)[,(数组名)]
功能:用于重新初始化静态数组的元素,或者释放动态数组的存储空间。
例如:
Dim T(10)As Integer
Erase T
examda说明:
(1)在Erase语句中,只需给出数组名,不带括号和下标。
(2)在Erase语句用于静态数组时,如果这个数组是数值数组,则把数组中的所有数组元素置为0;如果是字符串数组,则把所有数组元素置为空字符串。
(3)当把Erase语句用于动态数组时,将删除整个数组结构并释放该数组所占用的内存区。也就是说,动态数组经Erase语句执行后,即不复存在;而静态数组经Erase后,仍然存在,只是其内容被清空。
(4)Erase语句释放动态数组所使用的内存,在下一次引用该动态数组之前,必须用ReDim语句,重新定义该数组。
-
vb 二维数组_一起学VB——数组分类
2020-12-11 11:02:51其次根据是否可以被重新定义,数组可以分为静态数组和动态数组。一维数组与多维数组一维数组,即上节课程介绍的形式,也是默认情况下的数组形式,一维数组特点是只有一个下标。例如定义一个含有5个元素的一维数组,...上节课我们已经学习了数组的基本概念,本节课程我们来一起学习数组的分类,以及它们的声明方法。数组分类:首先根据维数,数组可以被分为一维数组和多维数组。其次根据是否可以被重新定义,数组可以分为静态数组和动态数组。一维数组与多维数组一维数组,即上节课程介绍的形式,也是默认情况下的数组形式,一维数组特点是只有一个下标。例如定义一个含有5个元素的一维数组,其在内存中的形式如下图所示:二维数组,就是数组里有数组。实际上,二维数组就是在一维数组的基础上,每个元素不在是一个具体的数据类型,而是再存储一个一维数组。二维数组有两个下标。比如A(5,3)这个二维数组。其共有6*4=24个元素。分别是A(0,0)、A(0,1)...A(5,2)、A(5,3)这24个元素。我们可以将其想象为一个Excel表格,其形式如下图所示:
多维数组,同二维数组类似,即三维数组有3个下标,4维数组有4个下标,以此类推。在VB中最多可以定义60维的数组。虽然VB提供了最多60维的数组,但是实际上我们最为常用的是一维数组以及二维数组,有时候会用到三维数组。其它多维数组通常使用的很少。这里小伙伴只要掌握一维数组和二维数组即可。如果今后确实需要用到更高维的数组,其使用方法与一维、二维数组的是一样的。静态数组与动态数组在VB中,数组按照能否被重新定义分为静态数组和动态数组。所谓静态数组,是指在定义时,已经指定了数组的下标,数组长度已经确定,在被定义后,无法再进行更改。动态数组,在某些情况下,不能事先确定数据的具体个数,那么这就可以采用动态数组来解决问题。动态数组与静态数组相反,在定义动态数组时,不需要定义其下标,而在使用动态数组时则需要用Redim语句来重新定义数组,并指定下标。数组的声明像变量一样,我们要使用一个数组前,必须事先进行声明,也就是定义一个数组后,才可以使用它。一维数组声明方法
说明:1,下标缺省时下标为0,可以用Option Base 1申明缺省下标为1。2,数据类型缺省时,默认为变体型。3,数组名的定义需要符合VB中标识符定义的要求。4,数组长度等于上标-下标+1,数组长度就是数组元素的个数。5,数组名+下标即可确定某个数组元素。以例1来说,A(0)即表示第一个数组元素,A(5)即表示最后一个数组元素。二维数组声明方法Dim 数组名([下标 To] 上标) [as 类型]例1:Dim A(5) as integer例2:Dim B%(1 To 6)
动态数组声明方法建立动态数组要分两步:第1步,用Dim语句声明数组,但不能指定数组大小Dim 数组名([下标1 To] 上标1, [下标2 To] 上标2) [as 类型]例1:Dim Arr(2,4) as String例2:Dim B$(1 To 3,1 To 5)
第2步,用ReDim语句动态的分配元素个数Dim 数组名() as 数据类型
ReDim [preserve] 数组名(下标1[,下标2...])
注意:在重新用redim定义数组后,数组内的数据全部清除。如需要保留之前的数据,则需要在定义时用 preserve 声明一下。即不加preserve关键词,那么该数组之前的数据将会全部被初始化,而使用preserve关键词后,数组之前的数据将会予以保留。使用动态数组时,切记次要点。好了,今天的全部内容就是这样了,我们下节课再见。例:Dim s() as SingleSub Form_Load() ... ReDim s(2,3) ... ReDim Preserve s(4,8) ...End sub
-
实例014动态数组
2020-04-14 17:20:30VB.NET保持了VB 6.0中就存在的关键字Redim,Redim的作用是重新分配数组元素的个数。 在最初定义数组时,可以不指明它的大小,比如下面这个定义: Dim Words() as String 上面这行代码声明了一个名字叫做Words的...VB.NET保持了VB 6.0中就存在的关键字Redim,Redim的作用是重新分配数组元素的个数。
在最初定义数组时,可以不指明它的大小,比如下面这个定义:
Dim Words() as String
上面这行代码声明了一个名字叫做Words的字符串数组,它的元素个数不确定,当需要使用这个数组时,可以用Redim关键字为它重新声明元素个数:
Redim Words(10)
重新声明数组Words后,它有11个元素。ReDim 语句 (Visual Basic)
数组变量重新分配存储空间。
语法
VB复制
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
部件
术语 Definition Preserve
可选。 修饰符,当仅更改最后一个维度的大小时,用来保留现有数组中的数据。 name
必需。 数组变量的名称。 请参阅 Declared Element Names。 boundlist
必需。 列出重新定义的数组各个维度的边界。 备注
可以使用
ReDim
语句来更改某个已声明数组的一个或多个维度的大小。 如果数组较大,并且你不再需要它的某些元素,ReDim
可通过减少数组大小来释放内存。 另一方面,如果数组需要更多元素,也可使用ReDim
进行添加。ReDim
语句仅供数组使用。 它对标量(仅包含单个值的变量)、集合或结构无效。 请注意,如果将变量声明为Array
类型,则ReDim
语句将没有足够的类型信息来创建新数组。仅可在过程级别使用
ReDim
。 因此,变量的声明上下文必须是过程;而不能是源文件、命名空间、接口、类、结构、模块或块。 有关详细信息,请参阅声明上下文和默认访问级别。规则
行为
- 多个变量。 您可以在同一声明语句中调整多个数组变量的大小,并为每个变量指定
name
和boundlist
部分。 以逗号分隔多个变量。 -
数组界限。
boundlist
中的每个条目都可以指定该维度的下限和上限。 下边界始终为 0(零)。 上边界是该维度可能的最大索引值,而不是维度的长度(即上边界加 1)。 每个维度的索引都可能在 0 到其上边界值之间变动。boundlist
中的维数必须与数组的原始维数(秩)相匹配。 -
数据类型。
ReDim
语句无法更改数组变量或其元素的数据类型。 -
起始.
ReDim
语句不能为数组元素提供新的初始化值。 -
级别.
ReDim
语句无法更改数组的秩(维数)。 -
用 Preserve 调整大小。 如果使用
Preserve
,则只能调整数组最后一个维度的大小。 对于其他每个维度,必须指定现有数组的边界。例如,如果数组只有一个维度,则可以重设该维度的大小并依然保留数组的所有内容,因为你更改的是最后一个也是唯一的维度。 但是,如果数组具有两个或更多维度,则使用Preserve
只能重设最后一个维度的大小。 -
属性. 可以对保存值数组的属性使用
ReDim
。 -
数组替换。
ReDim
释放现有数组,并创建一个具有相同秩的新数组。 新数组将替换数组变量中已释放的数组。 -
不保留的初始化。 如果不指定
Preserve
,ReDim
使用其数据类型的默认值初始化新数组的元素。 -
用 Preserve 初始化。 如果指定
Preserve
,Visual Basic 会将元素从现有数组复制到新数组。
Module Module1
Sub Main()
Dim iCount As Integer, jCount As Integer
Dim Words() As Integer
Console.WriteLine("多少?")
iCount = Console.ReadLineReDim Words(iCount)
Console.Write("现在的下界是:")
Console.WriteLine(Words.GetLowerBound(0))
Console.Write("现在在的上界是:")
Console.WriteLine(Words.GetUpperBound(0))For jCount = Words.GetLowerBound(0) To Words.GetUpperBound(0)
Words(jCount) = jCount.ToString
Console.WriteLine("下标:" & Words(jCount))
NextConsole.WriteLine("数组的维数" & Words.Rank)
Console.WriteLine("数组元素个数:" & Words.GetLength(0))
Console.ReadLine()
End SubEnd Module
- 多个变量。 您可以在同一声明语句中调整多个数组变量的大小,并为每个变量指定
-
关于动态数组的存储方式
2010-05-15 01:37:00在VB.Net中可以使用动态数组,动态数组和普通的固定数组一样,在内存中是连续的。当使用ReDim语句重新定义数组的大小时,ReDim语句会释放现有数组并且创建具有相同秩的新数组,最后根据该数组的类型为其设置默认值。...在VB.Net中可以使用动态数组,动态数组和普通的固定数组一样,在内存中是连续的。
当使用ReDim语句重新定义数组的大小时,ReDim语句会释放现有数组并且创建具有相同秩的新数组,最后根据该数组的类型为其设置默认值。
在使用ReDim语句的同时,加上Preserve关键字的情况下,重新创建的数组会保留重新创建之前的数组中的值。
例:
Dim arr1() As Integer
ReDim arr1(0)
For i As Integer = 1 To 10
ReDim Preserve arr1(i)
arr1(i) = i
Next i
MSDN上的解释:
数组替换。ReDim 释放现有数组并且创建具有相同秩的新数组。新数组将替换数组变量中已释放的数组。
不使用 Preserve 初始化。如果未指定 Preserve,ReDim 会将新数组的元素初始化为它们数据类型的默认值。
使用 Preserve 初始化。如果指定 Preserve 修饰符,Visual Basic 会将这些元素从现有数组复制到新数组。http://msdn.microsoft.com/zh-cn/library/w8k3cys2(v=VS.80).aspx
-
VB数组的清除
2019-09-27 12:22:31但有时可能需要清除数组的内容或对数组重新定义,这可以用:Erase语句来实现。 格式:Erase(数组名)[,(数组名)] 功能:用于重新初始化静态数组的元素,或者释放动态数组的存储空间。 例如: Dim T(10)As ...转载于:https://www.cnblogs.com/rosesmall/p/4871809.html
-
vb数组题型分析知识分享.doc
2020-04-30 08:20:26以下有关数组的说明中错误的是_29_ (A)根据数组说明的方式可将数组分为动态数组和静态数组 (B)在过程中不能用Private语句定义数组 (C)利用ReDim语句重新定维时不得改变已经定义说明过的数组的数据类型 (D -
VB中Dim和Redim的区别
2018-11-10 14:05:20redim:重新定义动态数组的维数,必须先用dim定义一个动态数组: dim arr(),然后可重新定义:redim arr(2,100)、redim arr(1000)。 在redim使用过程中,如果要保留数组中的数据,需要使用Preserve关键字,如果不加... -
VB中dim与redim的区别?
2018-11-02 08:23:22redim:重新定义动态数组的维数,必须先用dim定义一个动态数组: dim arr(),然后可重新定义:redim arr(2,100)、redim arr(1000)。 在redim使用过程中,如果要保留数组中的数据,需要使用Preserve关键字,如果不加... -
VB可变数组定义
2010-07-29 10:58:00关键点:Dim str() As string '定义redim str(n) '重设长度 or redim Preserve str(n) '重设长度,并保持原来记录不变...详细阐述:ReDim 语句 在过程级别中使用,用于为动态数组变量重新分配存储空间。 语法 ReDi... -
数组的长度需要自动变化时的解决办法
2007-09-17 10:20:00在C语言系列中(我做.net时用的是C#,也许VB有别的办法吧)数组的长度必须在初始化的时候决定,但是有时做不到,那么只能在程序运行时来动态改变 了,我是用了一个临时数组来记录原来的数组,在将原来的数组... -
VB读取EXCEL 编辑,
2011-06-23 12:19:38ReDim TextBoxA(1 To i, 1 To j) '重新定义动态数组! Set TextBoxA(i, j) = a With TextBoxA(i, j) '设置文本框属性 .Text = Data(i, j) .Visible = True .Height = 200 .Width = 500 .Top = .Height * (i ... -
VB程序设计及应用
2012-11-26 14:07:125.4.5 数组的清除和重新定义 5.4.6 数组的基本操作 5.4.7 数组应用举例 5.5 控件数组 5.5.1 控件数组的概念 5.5.2 控件数组的建立 习题二 5.6 过程 5.6.1 过程的定义 5.6.2 过程的调用 5.6.3 退出... -
vb Script参考文档
2009-07-28 22:13:02Erase 语句 重新初始化固定数组的元素并重新分配动态数组的存储空间。 Err 对象 含有关于运行时错误的信息。 Eval 函数 计算并返回表达式的值。 Execute 方法 根据指定的字符串,执行正则表达式的搜索。 Execute... -
VB程序设计综合复习题
2009-11-15 11:27:52在声明静态数组、重定义动态数组时的下标都可以用变量来表示吗? 9、函数过程和子过程的区别是什么? 10、子过程调用有哪两种形式? 11、什么是形参?什么是实参?什么是值引用?什么地址引用?地址引用时,对应的... -
vb贪食蛇源代码
2012-04-21 16:52:54vb小游戏定义蛇的运动速度枚举值 Private Enum tpsSpeed QUICKLY = 0 SLOWLY = 1 End Enum '定义蛇的运动方向枚举值 Private Enum tpsDirection D_UP = 38 D_DOWN = 40 D_LEFT = 37 D_RIGHT = 39 End Enum '... -
UltraEdit 15.0.0.1034 简体中文增强版 附keygen
2009-07-04 10:21:34* 在文件中(从文档数组参照)进行脚本查找失败 * 脚本文档方法 setActive() 失败 - 在 UltraEdit 中比较(通过 FTP 打开的)文件会被断掉 - 如果文件未保存,复制行时会跳到文件顶端 - 宏 * 不配对的引号将会... -
UltraEdit 15.0.0.1042 简体中文增强版(附有注册机)
2009-04-20 10:12:30* 在文件中(从文档数组参照)进行脚本查找失败 * 脚本文档方法 setActive() 失败 - 在 UltraEdit 中比较(通过 FTP 打开的)文件会被断掉 - 如果文件未保存,复制行时会跳到文件顶端 - 宏 * 不配对的引号将会... -
UltraEdit 15.0.0.1039 简体中文增强版(注册机看描述里第一行)
2009-04-15 11:47:37* 在文件中(从文档数组参照)进行脚本查找失败 * 脚本文档方法 setActive() 失败 - 在 UltraEdit 中比较(通过 FTP 打开的)文件会被断掉 - 如果文件未保存,复制行时会跳到文件顶端 - 宏 * 不配对的引号将会... -
Visual Basic 2010中文版从入门到精通.pdf
2012-08-12 18:36:244.4.2 保留动态数组的内容 75 4.5 数组的基本操作 76 4.5.1 数组的引用 76 4.5.2 数组元素的输入 76 4.5.3 数组元素的输出 77 4.5.4 数组元素的复制 78 4.6 数组元素的特殊操作 79 4.6.1 使用Erase语句对数... -
Excel_VBA教程
2014-09-22 11:36:347.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组中的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 利用VBA操纵文件和... -
ExcelVBA程序设计.doc
2011-04-05 21:32:517.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组中的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 利用VBA操纵文件和... -
Visual C++ 2005入门经典--源代码及课后练习答案
2013-02-02 16:42:047.4.3 在类定义中指定默认的形参值 318 7.4.4 在构造函数中使用初始化列表 320 7.5 类的私有成员 320 7.5.1 访问私有类成员 323 7.5.2 类的友元函数 324 7.5.3 默认复制构造函数 326 7.6 this指针 328... -
Visual.Basic.2010.&.NET4.高级编程(第6版) 扫描版带书签 3/3
2012-11-02 07:59:089.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 10.2.3... -
java源码包---java 源码 大量 实例
2013-04-18 23:15:26Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang... -
Visual.Basic.2010.&.NET4.高级编程(第6版) 扫描版带书签 2/3
2012-11-02 07:58:039.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 10.2.3... -
Visual.Basic.2010.&.NET4.高级编程(第6版) 扫描版带书签 1/3
2012-11-02 07:55:479.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 10.2.3... -
Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf
2013-03-20 15:41:429.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类 398 ... -
Visual Basic 2010 & .NET4 高级编程(第6版)-文字版
2013-03-21 08:54:519.12 vb中的lambda表达式 387 9.13 小结 389 第10章 ado.net和linq 391 10.1 ado.net的体系结构 392 10.2 ado.net的基本功能 393 10.2.1 ado.net的常见任务 393 10.2.2 ado.net的基本名称空间和类... -
【卷一/共两卷】AJAX实战pdf高清版90M
2012-07-07 16:01:13第一部分 重新思考Web应用 第1章 一种新的Web设计方法 1.1 为什么需要Ajax富客户端? 1.1.1 比较用户体验 1.1.2 网络延迟 1.1.3 异步交互 1.1.4 独占或瞬态的使用模式 1.1.5 忘掉Web 1.2 Aiax的四个基本原则 1.2.1 ...