vb.net 数组动态定义

为数组变量重新分配存储空间。

ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]

术语

定义

Preserve

可选。 修饰符,当仅更改最后一个维度的大小时,用来保留现有数组中的数据。

name

必选。 数组变量的名称。 请参见已声明的元素名称 (Visual Basic)

boundlist

必选。 列出重新定义的数组各个维度的界限。

可以使用 ReDim 语句来更改某个已声明数组的一个或多个维度的大小。 如果有一个较大的数组,并且您不再需要它的某些元素,ReDim 可通过减小数组大小来释放内存。 另一方面,如果代码确定某个数组需要更多元素,ReDim 也可以添加它们。

ReDim 语句仅适用于数组。 它在标量(只包含单一值的变量)、集合或结构上是无效的。 请注意,如果将变量声明为采用 Array 类型,ReDim 语句将没有足够的类型信息来创建新数组。

仅可以在过程级使用 ReDim 这意味着,变量的“声明上下文”必须是过程,而不能是源文件、命名空间、接口、类、结构、模块或块。 有关更多信息,请参见声明上下文和默认访问级别 (Visual Basic)

规则

  • 修饰符。只能指定 Preserve 修饰符,并且,如果这样做,就不能省略 ReDim 关键字。

  • 多个变量。可以在同一声明语句中调整多个数组变量的大小,同时为每个变量指定 nameboundlist 部分。 以逗号分隔多个变量。

  • 数组界限。boundlist 中的各个条目可指定该维度的下限和上限。 无论您是否指定,下限始终是零。 上限是该上标的最大可能值,而不是维度的长度(即上限加 1)。 每个上标都可能在零到其上限值之间变动。

    boundlist 中维度的数量必须与数组的原始秩匹配。

  • 空数组。可以使用 -1 来声明数组维数的上限。 这表示数组为空,但不是 Nothing (Visual Basic) 有关更多信息,请参见 数组 (Visual Basic) 然而,Visual Basic 代码不能成功访问此类数组。 如果尝试这样做,则在执行期间会发生 IndexOutOfRangeException 错误。

  • 数据类型。ReDim 语句无法更改数组变量或其元素的数据类型。

  • 初始化。ReDim 语句无法为数组元素提供新的初始化值。

  • 秩。ReDim 语句无法更改数组的秩(维数)。

  • 使用 Preserve 调整大小。如果使用 Preserve,则只能调整数组最后一个维度的大小,对于其他每个维度,您必须指定它在现有数组中已经具有的相同界限。

    例如,如果数组只有一维,而可以调整该维度的大小并依然保留数组的所有内容,因为您更改的是最后一个并且唯一的维度。 然而,如果数组具有两个或多个维度,则如果使用 Preserve 将仅可以更改最后维度的大小。

  • 属性。可以在容纳值数组的属性上使用 ReDim

行为

  • 数组替换。ReDim 释放现有数组并且创建具有相同秩的新数组。 新数组将替换数组变量中已释放的数组。

  • 不使用 Preserve 初始化。如果未指定 PreserveReDim 会将新数组的元素初始化为它们数据类型的默认值。

  • 使用 Preserve 初始化。如果指定 Preserve 修饰符,Visual Basic 会将这些元素从现有数组复制到新数组。

下面的示例将增加某个动态数组最后一个维度的大小(不会丢失数组中的任何现有数据),然后减小该大小(会有部分数据丢失)。 最后,它会将大小重新减小到其原始值,并重新初始化所有数组元素。

VB
Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)


第一个 ReDim 创建一个新数组,以替换变量 intArray 中的现有数组。 ReDim 将所有元素从现有数组复制到新数组中。 它还会在每一层中每个行的结尾另外添加 10 列,并将这些新列中的元素初始化为 0(数组元素类型 Integer 的默认值)。

第二个 ReDim 创建另一个新数组,复制所有适合的元素。 然而,每一层的每一行的结尾丢失了 5 列。 如果不再使用这些栏,丢失将不成问题。 减小大型数组的大小能够释放不再需要的内存。

第三个 ReDim 仍然创建另一个新数组,同时从每一层中每个行的结尾移除另外 5 列。 这一次它不会复制任何现有元素。 这样即会将数组恢复为其原始大小,并将它的所有元素还原为它们的原始默认值。

VB.NET学习笔记:数据类型——数组的定义和使用(动态数组、二维数组 VB.NET中,可以使用变量储存数据,例如储存学生姓名: dim strname as string="张三" 可以声明多个变量来储存三年级1班全部学生姓名,为了方便,给每个学生编了号: dim 三年级1班_1 as string="张三" dim 三年级1班_2 as string="李四" 阅读详情

相关推荐

VB.NET中动态添加控件数组

VB.NET中的控件数组?        项目的需求又变了,我必须要在我的窗口上根据读取的文件不同添加不同的checkbox,我本以为vb.netvb一样一定会有控件数组呢,结果网上的高手们都说vb.net是没有控件数组这个概念的。不过可以自己写一个类来实现控件数组的功能。他们都有现成的代码,我拿来用了,很好用。这里我就只简单说一下我在用这个类的过程中出现的问题。应该比较值得提一下。  

piaopiaoer的专栏 4391

VB 动态数组实例

VB 动态数组实例 VB 动态数组实例 VB 动态数组实例

VB.NET控件数组创建与管理实战详解

考虑一个表单中有多个输入字段和操作按钮的情形。我们可以分别为它们创建独立的控件数组:' 按钮数组btnSave,btnCancel,btnReset,btnSubmit' 文本框数组txtName,txtEmail,txtPhone,txtAddress' 复选框数组chkNotify,chkAgree,代码解释:- 使用集合初始化器语法{}快速填充已有控件;- 所有成员必须已在窗体设计器中定义并命名;- 此方式适用于设计时已知控件引用的情况。

weixin_33239721的博客 795

[VB.NET]VB REDIM

VB REDIM有段儿VB的代码,在参数设定初始值时,不知道它在做什么: ReDim P_Value(0 To UBound(P_Name), 0 To Lotnum - 1) As Variant P_Value(0, 0) = OrderNo P_Value(1, 0) = WorkNo P_Value(2, 0) = Dtl_No(0) For j = 0 To Lotnum - 1 P

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 1618

VB.NET 数组的定义 动态使用 多维数组

我们都知道在全部程序设计语言中数组都是一个非常重要的概念,数组的作用是同意程序猿用同一个名称来引用多个变量,因此採用数组索引来区分这些变量。非常多情况下利用数组索引来设置一个循环,这样就能够高效地处理复杂的情况,因此在非常多情况下,使用数组能够缩短或者简化程序的代码。本文主要介绍VB.NET数组的使用,希望对大家的使用带来帮助。 数组中的第一个元素的下标称为下界,最后一个元素的下标称为上界,其余的元素...

chinaherolts2008的博客 2826

VB.NET 实现动态数组

动态数组的作用:通过使用 ReDim 或标准的赋值语句给数组变量赋以不同的数组对象,可以随时改变它的大小。新数组对象可以有不同的维数和秩。这样有助高效管理内存。举个例子 publicClassDynamicobjDimDynamicObj()asobjDimI,JasIntegerForI=0To100RedimPreserveDyna...

weixin_30608503的博客 596

简要分析VB6.0和VB.NET区别

现在随着VB.NET的发展,大部分人都放弃使用VB6.0而选择VB.NET,下面我们就来研究一下VB6.0和VB.NET的区别。VB.NET是微软公司在2002年推出的一种开发基于.Net平台应用程序的开发语言,也是微软公司极力推荐的一种开发.Net平台应用程序的开发语言。首先还是让我们来简单了解一下VB.NET和其前一个版本,也是目前世界上拥有最多使用者的开发语言--VB 6.0的主要区别。 ...

夏晨Season的博客 1万+

VB.NET中使用控件数组

http://www.cnblogs.com/yunbo/archive/2009/08/13/1545657.html 控件数组是位于一个窗体上共享同一名称的一组同种类型控件。普通控件仅使用名称就可以识别,而引用控件数组中的成员则需要同时使用名称和索引。开发人员在 Visual Basic 6.0 以及更早的版本中使用控件数组主要有以下三个理由: 1.        在循环中访问数组中控

muolu_soft home 1万+

在c#/VB.NET中使用控件数组

由于在容器中的每一个控件只要不作特殊处理,都会自动构成了控件集合,这样,只要对原有的事件例程作少量修改,就可以非常方便的实现用一个事件例程响应某个集合中所有控件产生的事件。在Form中构成控件数组非常方便,但也有一个小问题:一般来说,Form中的控件往往有很多种,系统建立控件集合的时候将会把其中的所有控件放在同一个集合中,这样一来,程序员在写代码的时候有可能将每一个控件的下标混淆,为了解决这个问题,可以用Panel容器来根据需要将某类控件建立成控件数组,也就避免了上述问题。

1911

vb.net 数组列表详解

vb.net数组列表 现在除了数组的长度计数是基于0开始的这个变化外,vb.net还引进了一个数组列表(ArrayList)对象来代替原来的集合(Collection)对象,集合对象的长度计数总是从1开始的,而且在需要的时候,数组列表的长度可以是不定的。数组列表的基本的方法和集合一样,只不过它还具有一些新的功能方法。 例如: Dim Arl As ArrayList ‘构建一个数组列表

ff55fff的博客 7588

VBVB.net的区别

概述: VB.NET是基于微软.NET Framework之上的面向对象的编程语言。其在调试时是以解释型语言方式运作,而输出为EXE程序是是以编译型语言方式运作。可以看作是VB.NetFramework平台上的升级版本,增强了对面向对象的支持。 数据类型:

吴晓如 4639

vbvb.net的区别

现在随着VB.NET的发展,大部分人都放弃使用VB6.0而选择VB.NET,下面我们就来研究一下VB6.0和VB.NET的区别。VB.NET是微软公司在2002年推出的一种开发基于.Net平台应用程序的开发语言,也是微软公司极力推荐的一种开发.Net平台应用程序的开发语言。首先还是让我们来简单了解一下VB.NET和其前一个版本,也是目前世界上拥有最多使用者的开发语言--VB 6.0的主要区别。 VB6.0和VB.NET的主要区别简介: 虽然说VB.NETVB 6.0的后继版本,但在我看来VB.NET除了

chinaherolts2008的博客 4170

VB.net中一维数组,与VBA有什么区别

从 Excel 对象(如 Range)赋值的数组默认索引为 1。VBA 中从 Excel 获取的数组索引可能从 1 开始,而。类型数组,可混合存储不同类型数据(如字符串、数字、对象)。(一)在VB.net中的一维数组,初始化与赋值,举例说明。从 Excel 获取的数组默认为二维结构(即使单列)。基于 COM,功能较基础,无内置迭代器或集合扩展方法。VB.NET 的强类型减少运行时错误,VBA 的。开始的数组,而 Excel 赋值返回索引从。保留数据,但频繁操作性能低,推荐改用。

fsyuheduo的博客 971

[VB.NET]vb中定义数组,在vb.net怎样转?

<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 984

vb.net 教程 1-9 数组3-1 数组的合并

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 如何将多个数组合并为一个数组: 1、按照多个数组的大小重新定义一个新的数组,使用循环将旧数组的值写入新数组: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ...

学习微软 .net 技术开发 2582

vb.net动态控件数组

vb.net里面的动态控件数组的问题,这个动态控件数组vb里面easy到极致,可是在vb.net里面却有点让人摸不着头脑。其实也很简单,因为vb.netvb不同拉,来看看vb.net的动态控件数组如何实现。 1、在form的头部定义一个公共的ArrayList类型的变量         Dim m_items As New ArrayList2、在程序中动态生成控件  

optop的专栏 6609

VB.NET里奇怪的数组赋值现象

今天在写程序过程中发现了.NET里的一个奇怪现象,就是给数组数组赋值时竟然是"指向数组的地址",即数组数组赋值时不是生成一个新的值后传给数组保存,而是传给该数组的地址给数组.打个比方:有数组A和数组B.现在把数组B赋给数组A.而则时数组A不是保存数组B的值而是保存数组B的内存地址,这就产生一个问题:如果数组B的值改变则数组A的值也跟着改变!!!....而在ASP就不是这样情况,VB也可能不是这

鱼的天堂与地狱 1672
上一篇: vb.net 使用进度条和Array类的排序方法
下一篇: 顺序查找与监视哨
deepfuture
博客等级 码龄17年 209粉丝 1288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值