`
deepfuture
  • 浏览: 4393382 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79996
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69870
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103187
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285223
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14989
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67431
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32019
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45921
社区版块
存档分类
最新评论

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 会将这些元素从现有数组复制到新数组。

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

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像VB6一样使用控件数组

    ### vb.net中实现类似VB6的控件数组功能 #### 背景介绍 在经典编程语言Visual Basic 6.0(简称VB6)中,控件数组是一种非常实用的功能,它允许开发者创建一系列具有相同名称但不同索引的控件。这种方式极大地简化了...

    vb.net 控件数组演示

    在VB.NET编程中,控件数组是一种非常有用的特性,它允许我们创建一组具有相同类型的控件,并通过单一的引用来管理它们。控件数组的概念在Windows Forms开发中尤其常见,可以极大提高代码的效率和可维护性。在这个...

    vb 有序数组的合并

    在VB.NET中,数组可以是固定大小的,也可以是动态的(如本例所示的可变类型数组)。为了确定数组的边界,我们可以使用 `UBound()` 函数获取数组的上界,使用 `LBound()` 函数获取下界。在本例中,`ea` 和 `eb` 分别...

    vb.net2010代码创建控件数组

    在VB.NET 2010中,虽然设计时界面不直接支持控件数组,但开发者可以通过编程方式实现这一功能。控件数组是一种特殊的数据结构,它允许你将多个相同类型的控件作为一个整体来处理,方便地批量设置或访问它们的属性。...

    VB.NET做空间数组

    在 VB.NET 中,我们可以定义一个包含控件对象的数组来模拟控件数组的行为。例如,假设我们需要创建一个包含三个 Label 控件的数组: ```vbnet Dim La(3) As Label ' 定义一个可以存放 Label 控件的数组 Dim i As ...

    vb.net编程实例(内含完整程序和代码)

    VB.NET编程实例是针对初学者的一个宝贵资源,它包含了完整的程序和代码,旨在帮助学习者快速掌握VB.NET语言的基础和实践应用。VB.NET是Microsoft .NET框架的一部分,是一种面向对象的编程语言,具有直观的语法和强大...

    VB.NET教程中高级篇

    7. 反射:VB.NET的Reflection机制允许运行时动态地获取类型信息,甚至实例化和调用对象的方法,这在插件系统或元编程场景中非常有用。 8. 委托和事件:委托是VB.NET中的类型安全指针,可以引用方法,常用于实现回调...

    新VB.NET源代码2023-11-18-23-50QZQ.zip

    5. **LINQ(Language Integrated Query)**:VB.NET支持语言集成查询,允许开发者以一种更自然的方式进行数据查询,可以方便地操作数据库、数组、集合等数据源。 6. **异步编程**:VB.NET引入了`Async`和`Await`...

    数组相减 VB

    VB提供了并行处理的可能性,如使用`Parallel.For`,但这通常适用于.NET Framework 4.0及更高版本的VB.NET,而不是经典的VB6。在VB.NET中,可以这样实现: ```vb Imports System.Threading.Tasks ... Parallel.For...

    vb.net 第三次试验(数组和过程二).rar

    在VB.NET编程环境中,第三次试验主要探讨了两个关键概念:数组和过程,它们在软件开发中扮演着至关重要的角色。数组允许我们存储和操作多个相同类型的数据,而过程则帮助我们将复杂的任务分解为可管理的模块。这次...

    大学VB.NET程序设计实践教程电子教案

    在VB.NET中,学习如何声明、初始化和操作数组及集合对于处理大量数据十分必要。 【面向对象编程】 VB.NET是一种完全面向对象的语言,它支持类、对象、属性、方法、继承、多态等面向对象特性。理解这些概念有助于...

    VB.Net中文教程(PDF)

    6. **数组与集合**:VB.NET提供了丰富的数组和集合类型,如ArrayList和List,学习者将学会如何操作和管理这些数据结构。 7. **函数与过程**:函数和过程是组织代码、实现模块化的重要工具。教程会介绍如何定义和...

    vb.net做的图片存储到SQL数据库

    在VB.NET中,将图片存储到SQL数据库是一个常见的任务,主要涉及到BLOB(Binary Large Object)类型的数据处理。本文将详细介绍如何使用VB.NET实现这一功能,以及涉及的关键知识点。 首先,我们需要了解SQL数据库中...

    vb.net CRC 算法

    在VB.NET中实现CRC算法,可以帮助开发者确保数据的完整性和一致性,尤其是在进行串行通信或者文件存储时。CRC通过计算数据的二进制表示中的特定位模式来生成一个校验和,如果在接收端计算出的CRC与发送端相同,则...

    VB.NET柱状图.rar

    - 在VB.NET中,首先需要创建一个Chart对象,并设置其DataSource属性为数据源(可能是数组、列表或其他集合)。接着,设置Series的Name、ChartType(这里为Column)和XValueMember、YValueMembers属性,这些属性分别...

    VB.NET编写的压缩与解压函数

    根据给定的文件信息,我们可以总结出以下关于“VB.NET编写的压缩与解压函数”的详细知识点: ### VB.NET中的压缩与解压技术 #### 一、简介 VB.NET(Visual Basic .NET)是一种广泛使用的面向对象编程语言,它是...

    VB.NET.rar_vb.net_考试VB.net

    在VB.NET中,你可以通过定义类来创建自定义的数据类型,通过属性和方法来操作这些类型。继承允许你创建一个类作为另一个类的基础,从而复用和扩展代码。多态性则允许不同类型的对象对同一消息作出不同的响应,提高了...

    快速傅里叶变换(FFT)VB.NET实现

    4. **数组操作**:在VB.NET中,需要对一维或二维数组进行操作,以存储输入信号和计算结果。理解数组的索引和遍历是必要的。 5. **位反转**:在执行FFT过程中,需要对索引进行位反转,这通常通过位操作完成,例如...

    vb.net DataGridView控件用法,.net DataGridView控件用法,GridView用法

    在VB.NET和C#等.NET语言中,使用DataGridView控件可以方便地构建用户界面,处理各种类型的数据。下面将详细介绍关于VB.NET中的DataGridView控件及其用法。 1. **添加DataGridView控件** 要在VB.NET项目中使用...

Global site tag (gtag.js) - Google Analytics