精华内容
下载资源
问答
  • 定义数组后,为了使用数组,必须为数组分配所需要的内存区。根据内存区分配时机的不同,可以把数组分为静态(Static)数组动态(Dynamic...在VB中定义动态数组通常分两步:首先在窗体层或标准模块中用Dim、Private或P...

    69413f8fe192f68bbeb37bf14c1bf46d.png

    定义数组后,为了使用数组,必须为数组分配所需要的内存区。根据内存区分配时机的不同,可以把数组分为静态(Static)数组和动态(Dynamic)数组。通常把需要在编译时分配内存区的数组叫做静态数组,而把需要在运行时分配内存区的数组叫做动态数组。当程序没有运行时,动态数组不占据内存,因此可以把这部分内存用于其他操作。

    在VB中定义动态数组通常分两步:首先在窗体层或标准模块中用Dim、Private或Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组。

    .ReDim语句的作用,是重新指出数组的大小。它是在程序执行到ReDim语句时才分配存储空间。

    格式:ReDim(数组名)(下标)[As(类型)]

    功能:改变动态数组的大小和存储空间。

    考试大说明:

    (1)下标可以是常量,也可以是具有确定值的变量。

    (2)语句中各参量的含义与用Dim定义数组的语句相同。

    (3)ReDim语句只能用于动态数组,它可以改变每一维的大小,但不能改变维数。

    (4)当程序编译时,ReDim语句中的所有数组均被说明为动态数组。在程序运行中,当执行到ReDim语句时,就把新的上下界重新分配给数组,数组元素的值将被初始化,所有的数值元素的值被置为0,字符串元素被置为空字符串。

    (5)ReDim语句可以同Dim语句一样定义数组。在同一程序中,ReDim语句还可以多次使用。在用:ReDim语句重新定义数组之前,可以使用:Erase语句将原来的数组删除。

    2829f2ca24f0d0090cbba57f30759f23.png

    VB动态数组的定义方法.doc

    下载Word文档到电脑,方便收藏和打印[全文共606字]

    编辑推荐:

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    8b95f2eb3d3f7ce4dc3bf1178c74941e.png

    下载Word文档

    展开全文
  • VB中动态数组的使用事项

    千次阅读 2019-02-27 16:05:14
    1.动态数组的使用时,先在窗体层、标准模块或过程声明一个没有下标的数组(括号不能省略),不指定维数。 2.在过程中用ReDim语句定义带下标的数组,给出数组的维数。注意:用ReDim定义数组,只能改变数组元素的...

    1.动态数组的使用时,先在窗体层、标准模块或过程中声明一个没有下标的数组(括号不能省略),不指定维数。
    2.在过程中用ReDim语句定义带下标的数组,给出数组的维数。注意:用ReDim定义的数组,只能改变数组元素的个数,不能改变数组的维数和数据类型。

    以下举例几个错误类型:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • VB.NET,可以使用变量储存数据,例如储存学生姓名: dim strname as string="张三" 可以声明多个变量来储存三年级1班全部学生姓名,为了方便,给每个学生编了号: dim 三...

    官方帮助页面:Visual Basic 中的数组

    VB.NET中,可以使用变量储存数据,例如储存学生姓名:

    dim strname as string="张三"
    

    可以声明多个变量来储存三年级1班全部学生姓名,为了方便,给每个学生编了号:

    dim 三年级1班_1 as string="张三"
    dim 三年级1班_2 as string="李四"
    dim 三年级1班_3 as string="王五"
    dim 三年级1班_4 as string="麻二"
    ……
    

    虽然可行,但很麻烦,而且使得代码难以维护和扩展,万一该班学生有增减则需要对应用程序进行修改、 重新编译和重新部署。

    一、一维数组

    通过使用一个数组,可以通过相同的名称、不同的索引来储存和访问以上的多个变量:

            '声明
            Dim 三年级1班(3) As String
    
            '赋值
            三年级1班(0) = "张三"
            三年级1班(1) = "李四"
            三年级1班(2) = "王五"
            三年级1班(3) = "麻二"
    
            '访问
            For int As Integer = 0 To 3
                Console.WriteLine("三年级1班" & (int + 1).ToString & "号学生的姓名:  " & 三年级1班(int))
            Next
    

    测试结果如图:
    在这里插入图片描述
    该示例执行三项操作:
    1、它声明了一个具有4个元素的数组“三年级1班(3)”。 声明数组中括号里的数字3表示数组中的最后一个索引。
    2、它将值赋给数组中的每个元素。 通过使用数组名称并在括号中包含单个元素的索引访问数组元素。
    3、它列出了数组的每个值。 该示例使用 For 语句按索引号来访问数组的每个元素。

    二、二维数组

    如果需要储存三年级全部班级的学生姓名,可以使用二维数组,这跟Excel存储数据很相似。
    在这里插入图片描述
    Excel以二维表的方式存储数据,工作表名“三年级”相当于数组名称,每行存储一个班级的学生姓名,单元格地址(如:C3,也可以用数字[3,3]表示)相当于数组元素的索引。
    通过“工作表名(行号,列号)”访问Excel数据,如:三年级(3,3),二维数组也是按这样的方法访问数组里的元素。如下代码:

        '声明一个3行4列二维数组
            Dim 三年级(2, 3) As String
    
            '为第一行的各列赋值(1班学生姓名)
            三年级(0, 0) = "张三"
            三年级(0, 1) = "李四"
            三年级(0, 2) = "王五"
            三年级(0, 3) = "麻二"
            '为第二行的各列赋值(2班学生姓名)
            三年级(1, 0) = "赵钱"
            三年级(1, 1) = "孙小"
            三年级(1, 2) = "王二"
            三年级(1, 3) = "秦大"
            '为第三行的各列赋值(3班学生姓名)
            三年级(2, 0) = "李一"
            三年级(2, 1) = "赵二"
            三年级(2, 2) = "钱三"
            三年级(2, 3) = "孙四"
    
            '访问
            For int1 As Integer = 0 To 2 '行
                For int2 As Integer = 0 To 3 '列
                    Console.WriteLine("三年级" & (int1 + 1).ToString & "班第" & (int2 + 1).ToString & "号学生的姓名:  " &
                                      三年级(int1, int2) & "  ,索引号为: (" & int1.ToString & "," & int2.ToString & ")")
                Next
            Next
    

    测试结果如图:
    在这里插入图片描述
    可见,使用数组比直接声明多个变量更简单,那到底什么是数组呢?

    三、数组的概念

    数组其实就是一个特殊的变量,其表示一组数据的集合。在 VB.net中,允许将多个类型相同或者不相同的数据组合成一个集合,它们有共同的变量名,然后用其索引号访问其每个元素,该集合称为数组。

    1、数组的声明

    使用数组,首先应声明数组。数组的声明与声明一个单独的变量相似:

            '声明变量
            Dim arr As String
    
            '声明一维数组
            Dim arr1(3) As String
    
            '声明二维数组
            Dim arr2(2, 3) As String
    
            '声明三维数组
            Dim arr3(2, 2, 3) As String
    

    数组的声明比变量的声明多了一个括号,括号里写上该数组的最大索引号;若是声明二维或多维数组,各维最大索引号数字用逗号分割。
    除了可以用Dim关键字声明数组外,声明数组还可以使用Public或Private关键字。声明使用的关键字不同将会影响数组的生命周期,Dim关键字主要用于声明过程级别的私有数组,Private关键字用于声明模块级或类级别的数组,Public关键字则是在模块的声明部分建立一个公共数组,这跟变量的作用域相似。
    旧VB6.0数组索引号的开始值可以由编程者定义(如 -1 TO 5),但VB.NET数组的索引总是从0开始到最大索引号的连续整数,也就是说数组元素的个数总是比最大索引号多1,所以声明时不需要也不能用TO关键字来声明索引号范围。
    还可以使用New子句来声明数组:

            '一维
            Dim cargoWeights() As Double = New Double(9) {}
            '二维
            Dim hourlyTemperatures(,) As Integer = New Integer(23, 1) {}
            '三维
            Dim januaryInquiries(,,) As String = New String(30, 20, 2) {}
    

    使用New子句时必须使用大括号{},且不能在数组变量声明中指定维的长度。

    2、数组的赋值

    声明数组后,就可以通过索引号来引用数组中的元素,为数组赋值或访问数组中元素,以上已有说明,这里略过。
    也可以声明数组的同时为数组赋值。
    一维数组:

            Dim str1 As String() = {"%", "&", "@"}
            Dim str2() As String = {"%", "&", "@"}
            Dim str3 As String() = New String(2) {"%", "&", "@"}
            Dim str4() As String = New String(2) {"%", "&", "@"}
    

    需要注意:1、提供的元素值必须包含在大括号 {}内;2、不能在数组变量声明中指定维的长度。数组会根据元素值的数量推断数组的大小。
    每个语句执行后,将创建的数组长度为 3、索引号从0 到 2、已赋初始值的数组。
    二维数组:

            Dim str1 As String(,) = {{"0-0", "0-1", "0-2"}, {"1-0", "1-1", "1-2"}, {"2-0", "2-1", "2-2"}}
            Dim str2(,) As String = {{"0-0", "0-1", "0-2"}, {"1-0", "1-1", "1-2"}, {"2-0", "2-1", "2-2"}}
            Dim str3 As String(,) = New String(2, 2) {{"0-0", "0-1", "0-2"}, {"1-0", "1-1", "1-2"}, {"2-0", "2-1", "2-2"}}
            Dim str4(,) As String = New String(2, 2) {{"0-0", "0-1", "0-2"}, {"1-0", "1-1", "1-2"}, {"2-0", "2-1", "2-2"}}
    

    提供的元素值必须嵌套在大括号{}内 。 {“0-0”, “0-1”, “0-2”}这个表示第1行,“0-0"表示第1行第1列的值为"0-0”。如图:
    在这里插入图片描述

    3、数组的属性与方法

    每个数组都继承自 System.Array 类,可以使用System.Array 类提供一些属性和方法,用于获取数组维数、大小、最大索引号等。
    (1)、Rank属性
    获取 数组的维数。 例如,一维数组返回 1,二维数组返回 2,依次类推。
    (2)、Length和LongLength属性
    获取所有维数中元素的总数。Length返回32位整数,LongLength返回64位整数。
    (3)、GetLength和GetLongLength方法
    获取数组中指定维中的元素数。GetLength返回32位整数,GetLongLength返回64位整数。
    (4)、GetLowerBound方法
    获取数组中指定维度第一个元素的索引。返回32位整数。
    (5)、GetUpperBound方法
    获取数组中指定维度最后一个元素的索引(32位整数)。如果指定维度为空则返回-1。
    示例代码:

            Dim arr(,) As String = {{"0-0", "0-1", "0-2"}, {"1-0", "1-1", "1-2"}, {"2-0", "2-1", "2-2"}}
            Dim intRank As Integer = arr.Rank '获取维数
            Dim intLength As Integer = arr.Length '获取所有维数中元素的总数
    
            '嵌套循环每一维度(从第一个元素索引号到最后一个元素索引号)
            For int1 As Integer = arr.GetLowerBound(0) To arr.GetUpperBound(0)
                For int2 As Integer = arr.GetLowerBound(1) To arr.GetUpperBound(1)
                    Console.WriteLine("(" & int1.ToString & "," & int2.ToString & ")    " & arr(int1, int2))
                Next
            Next
            
            '也可以不使用嵌套循环获取元素值
            For Each arr1 As String In arr
                Console.WriteLine(arr1)
            Next
    

    还有很多的其他方法请自行参考官方帮助。

    三、动态数组

    有时在程序运行之前无法确认数组的大小,需要在程序运行时动态决定数组大小,称为动态数组。

    1、动态数组的声明

    跟一般的数组声明一样,只是在括号内不必填写各维的最大索引号(留空)。如

            '声明一维动态数组
            Dim arr1() As Integer
            '声明二维动态数组
            Dim arr2(,) As Integer
    

    声明动态二维数组需要在括号里用,号,这跟旧VB6.0的声明不一样,旧VB6.0不需要关心维数,只要是动态数组都是如下声明:

             '声明动态数组(一维、二维等)
            Dim arr1() As Integer
    

    2、使用ReDim语句动态分配数组大小

    使用 ReDim 语句可以更改某个已声明数组的一个或多个维度的大小。语法:
    ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, … ] ]
    参数:
    Preserve ——可选。 修饰符,当仅更改最后一个维度的大小时,用来保留现有数组中的数据。
    name——必须的。 数组变量的名称。 请参阅声明的元素名称。
    boundlist——必须的。 列出重新定义的数组各个维度的边界。

            '分配大小
            ReDim arr1(1)
            ReDim arr2(1, 1)
    

    仅可在过程级别使用 ReDim语句,ReDim 语句可以改变各维元素的个数,但无法更改数组变量或其元素的数据类型,也不能更改数组的维数,更无法为数组元素提供新的初始化值(使用数组元素的数据类型的默认值来初始化这些元素)。
    如果想改变数组的大小但又想保留原有数据,可以使用 Preserve,但只能调整数组最后一个维度的大小。 对于其他每个维度,必须指定现有数组的边界。如:

            ReDim Preserve arr1(2)
            ReDim Preserve arr2(1, 2)
    

    关于用或不用Preserve关键字的区别,请看以下完整示例代码:

            '声明一维动态数组
            Dim arr1() As Integer
            '声明二维动态数组
            Dim arr2(,) As Integer
    
            '分配大小
            ReDim arr1(1)
            ReDim arr2(1, 1)
    
            '赋值
            For Each int As Integer In arr1
                arr1(int) = int + 1
            Next
    
            For int1 As Integer = 0 To arr2.GetUpperBound(0)
                For int2 As Integer = 0 To arr2.GetUpperBound(1)
                    arr2(int1, int2) = int1 + int2
                Next
            Next
    
            '重新分配大小,请单步执行,观察Preserve关键字的作用
            ReDim Preserve arr1(2)
            ReDim Preserve arr2(1, 2)
            ReDim arr1(3)
            ReDim arr2(2, 3)
    

    四、使用数组的注意事项

    1、维度长度:
    每个维度的索引是基于 0 的这意味着其范围为 0 到其上限之间。 因此,给定维度的长度为一个大于该维度的声明的上限。
    2、长度限制:
    每一维数组的长度限制为的最大值Integer数据类型,即Int32.MaxValue或 (2 ^31)-1。 但是,数组的总大小还受到系统上可用的内存限制。 如果尝试初始化数组超出可用内存量,则运行时会引发OutOfMemoryException。
    3、大小和元素大小:
    数组的大小独立于其元素的数据类型。 大小始终表示元素 (不所占用的内存的字节数) 的总数。
    4、内存消耗:
    做出关于数组如何存储在内存中的假设是不可靠的。 由于不同数据宽度的平台上的存储会有所变化,因此同一数组在 64 位系统上可以占用比在 32 位系统上更多的内存。 具体取决于数组初始化时的系统配置,公共语言运行时 (CLR) 可以尽可能地将存储分配到靠近包元素的地方,或者将它们全部在自然硬件边界上对齐。 此外,数组需要存储开销的控制信息,而且每添加一个维度,这种开销随之增加。
    5、维度限制:
    除一维、二维数组外,还有三维、四维……,在 Visual Basic.NET中,数组的维度最多不超过32。

    展开全文
  • 常规的给类对象数组是无法定义事件的,这个例子给了一些参考。
  • VB6.0中数组定义实測

    千次阅读 2017-04-24 21:56:00
    作者:iamlasong 1、环境 Visual Basic 6.0精简版,由于仅仅做一些小工具,认为这个已经够了。...2、数组定义中发现的问题 1)网上关于限定大小的数组定义: Dim a(n) as type a是...

    作者:iamlasong

    1、环境

    Visual Basic 6.0精简版,由于仅仅做一些小工具,认为这个已经够了。我认为。编程语言、数据库等东西,不一定要用最新的,适合、够用就好,比方Win8都出来几年了,我们非常多人还在用XP,日常办公,够用了。

    2、数组定义中发现的问题

    1)网上关于限定大小的数组定义: Dim a(n) as type  

    a是一个type型的数组,这个数组共同拥有n个元素,最小下标为0(也就是从0開始)。最大下标为n-1。  注意n能够是常量、常量表达式,千万不能是变量。这个n的类型仅仅能是数值型。

    例如以下:

      Dim a(5) as integer   ‘定义一个integer型的数组a,共同拥有5个元素。

    实际实验结果是:Dim a(5) as integer  

     定义一个integer型的数组a,共同拥有6个元素,各自是a(0),a(1),a(2),a(3),a(4),a(5)

    2)网上关于不限定大小的数组定义: 

    Dim b() as integer 

    这个数组b能够赋多个值,实际实验结果是:这种定义不报错但无法使用,一个值也赋不了。

    要使用这个数组。须要在程序中依据实际须要的大小,又一次定义,只是,定义大小时能够使用变量。如:

    ReDim b(length / 3 * 4)          'length是变量,编程时不确定大小。

    这时数组b就能够使用了。

    3)网上关于限定起止下标的数组定义: 

    Dim c(3 to 5) as integer  

    这样定义就规定了上限和下限(有三个数)。限为c(3),限为c(5),这个和实验结果一致。


    上述问题是普遍规律还是这个版本号的结果,亦或网上那些资料就是错的。由于没有实验,就不知道了。

    展开全文
  • VB中若要重新定义一个动态数组的元素个数,应当如果事先不确定数组维数,可以先不具体确定。待知道维数后,重新定义. 如字符串长度不定,可以采取如下方法: dim a() as integer . n=len(text1) redim a(n)VB中,...
  • VB6.0中数组定义实测

    万次阅读 2014-07-25 10:31:18
    作者:iamlasong 1、环境 Visual Basic 6.0精简版,因为只做一些小工具,觉得这个已经够了。我觉得,编程语言、数据库...2、数组定义中发现的问题 定义数组   Dim a(n) as type  A 是一个 type 型的数组,这个
  • 关于VB中数组教程,数组的概念,动态数组的建立与声明
  • VB定义字符串数组并赋值

    万次阅读 2019-06-26 16:56:56
    ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private、Public 或 Dim 语句声明过的动态数组的大小。 EOF:指当前记录位置位于Recordset对象的最后一个记录之后。 UBound 函数返回数组中...
  • VBA二维数组定义

    2010-01-22 22:17:54
    VBA二维数组定义,这是EXCEL精英培训网上的教程
  • vb.net 数组定义详解

    千次阅读 2017-08-10 16:53:13
    数组(Arrays),可以用相同名字引用一系列变量,并用数字(索引)来识别它们,在许多场合,使用数组可以...在vb.net,所有的数组都是以“0”为起始长度的,这与vb 6.0完全不一样,在vb 6.0,如果写下以下语句:
  • 直接用redim定义最大可以定义成几维。 vb的知识了忘记是几维了
  • 我们都知道在所有程序设计语言中数组都是一个非常重要的概念,数组的作用是允许程序员...本文主要介绍VB.NET数组的使用,希望对大家的使用带来帮助。 数组中的第一个元素的下标称为下界,最后一个元素的下标称为上界,
  • vb 动态定义多维数组

    千次阅读 2011-12-12 15:00:00
    ReDim ipData(i, j) As String
  • 怎么在VB中数组元素的每个下标一个变量名,就像定义参数一样?不同的下标表示不同的变量名在VB的实现是?
  • 经过长时间学习VB.NET数组声明和VB.NET数组初始化,于是和大家分享一下,看完本文你肯定有...VB.NET与其它语言相似,提供了简单的途径对数据进行分组,将它们存放到数组结构。本文,我们将回顾数组的声明和使用。
  • 1. 静态数组在内存中位于栈区,是在定义时就已经在栈上分配了固定大小,在运行时这个大小不能...动态数组是在程序运行时,由程序员根据实际需要从堆内存中动态申请的,使用结束后由程序员进行释放,效率低。 3. ...
  • 学习笔记:VB.net动态添加控件数组并传递事件控件数组和事件“中间人”动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组 即使可以,为每一个数组成员编写事件也是非常...
  • 在VBS有办法定义字节数组么?就是字节子类型数组(VarType是8209的那种)注意不是VB
  • VB学习记录——数组

    万次阅读 多人点赞 2019-07-06 13:05:49
    1.定义一个数组,其实就是让系统在内存分配一个连续的区域,用来存储数组的元素。其格式为:Dim 数组名字 (下界 To 上界) As 类型。 Dim MarkVB(1 To 30) As Integer '定义一个一维数组 上界30 下界是1 共30个...
  • VB_08 数组 定义

    2010-09-17 15:39:09
    VB_08 数组 定义 基础 适合初学者 基本的定义语句 法则
  • 注释:VB6数组的方法比较少,需要从源数组切片出一个新的数组,实现了类似JS数组的slice方法,目前暂不支持传入负数; 文章目录一、VB6版本的数组slice()二、VBS版本的数组slice()三、VB6使用slice()的示例 一、...
  • vb数组定义方法是什么发布时间:2020-04-26 15:04:14来源:亿速云阅读:179作者:小新vb数组定义方法是什么?相信有很多人都不太了解,今天小编为了让大家更加了解vb数组,所以给大家总结了以下内容,一起往下看...
  • VB 清除数组中全部元素的值

    千次阅读 2019-06-12 11:41:58
    重新初始化大小固定的数组的元素,以及释放动态数组的存储空间。 语法 Erase arraylist 所需的 arraylist 参数是一个或多个用逗号隔开的需要清除的数组变量。 说明 Erase 根据是固定大小(常规的)数组还是动态数组...
  • vb字符串数组初始化赋值

    千次阅读 2018-08-30 10:27:31
    Dim str() = {"1","2","3","4","5"}  
  • 二维数组的位置定位 代码: Private Sub Command1_Click() Dim a(1 To 9, 1 To 9) 先定义a的值范围 For i = 1 To 9 For j = 1 To 9 a(i, j) = "a" & "(" & i & "," & j & ")" Print a(i...
  • VB 数组下标说明实例

    2010-06-07 14:17:03
    VB 数组下标说明实例 VB 数组下标说明实例
  • vb中数组的初始化

    千次阅读 2014-10-24 01:37:36
    vb中数组的初始化问题:计划使用数组存储以下值:"零分,班序,年名,序,组名,级名,总分3,总分5,总分9,总序,语序,数序,英序,物序,化序,政序,历序,地序,生序"方法:在vb中数组初始化比较麻烦1.标准做法:dimfield(19)as...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,452
精华内容 8,980
关键字:

vb中动态数组重新定义