精华内容
下载资源
问答
  • 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。

    展开全文
  • VB学习记录——数组

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

    数组知识初步总结

    1.定义一个数组,其实就是让系统在内存中分配一个连续的区域,用来存储数组的元素。其格式为:Dim 数组名字  (下界 To 上界) As  类型。

    Dim MarkVB(1 To 30) As Integer '定义一个一维数组  上界30  下界是1  共30个元素。 也可以Dim MarkVB(29) As integer,此定义下表从0开始,元素也是30个。   加上Option Base 1  ,Dim MarkVB(30) As integer这个语句也是30个元素,下标从1开始。数组大小=上界-下界+1。

    2.动态数组 ,不能定义数组的维数和个数。Dim  Mark()  As Integer  使用的时候重新声明     redim Mark(n)即可。使用关键字Pereserve可以保存之前的数组内容。

    3. ReDim 语句的下标可以是常量,也可以是有确定值的变量,程序书写时可以多次使用ReDim来改变数组的大小,但是每次使用Redim语句都会造成数组之前数据的丢失,使用Preserve选项对数组进行重新说明时,将会保留数组中原来的数据,但是该参数只能改变最后一维的大小。

    4.数组输入函数 Array(),此函数只能对一维数组进行赋初值,并且这个数组必须为Variant变体型,不能声明数组的大小和类型。Dim  Mark() ,Mark=Array(1,2,3)  ,此时可以利用Ubound()函数确定数组的上界,比如Ubound(Mark)=2,利用For循环可以输出数组元素。

    5.Val()是一个类型转换函数 ,可以把字符串转换成相应的整数,Val("-3")=-3   VAL("vb5.0")=0  VAL("12 bC")=12  VAL与CSTR功能相反,CSTR将数值表达式的值换成字符串        CSTR(125)="125"

    6. 选择法排序

    思想:求取数组最值下标,并交换位置。

    步骤: 1. 每一轮在未排序的数组中,找出最值和第一个元素进行交换,这样就确定了一个元素的位置

                 2. 未排序的数组范围缩小一个,继续采取上述步骤进行新的排序

    注意一下  n个数据只要进行N-1轮排序即可  附上一个代码

     7.冒泡法排序

    思想:冒泡排序 每一次将相邻的两个数字进行比较,比如10个数字。每一次比较相邻的两个,让比较大的数值往下走,第一轮比较9次就可以将最大的数字排到最后面,10个数字需要进行9趟比较,第i趟比较的次数为10-i.

    注意点:冒泡排序是可以提前结束的,如果在某一趟的排序比较中,没有发现变量的下沉,那么说明数字已经是有序排列,则此时可以终结排序。设置一个标志变量 ,放在内循环中,用来检测排序是否完成 。程序如下

    8. 插入数据,在有序数组中插入一个数据

    基本思想:首先寻找插入的位置,其次将插入位置之后的元素一次向后移位 。  

    注意事项及代码 如下

    9.删除数据

    10. Asc()函数用来返回字符的ASCII码   并且只返回第一个字符  Asc("abc")  =97   

    Ucase()函数:UCase(string),返回 Variant(String)其中包含转成大写的字符串。必要的 string参数为任何有效的字符串表达式。如果 string 包含 Null,将返回Null。只有小写的字母会转成大写,原本大写或非字母之字符保持不变。例:Dim MyWord= UCase("Hello World")' 返回"HELLO WORLD"。

    展开全文
  • VB定义字符串数组并赋值

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

    一:代码如下

     --定义变量
      Dim J As Long  
      J = 0
      Dim sSQL As String
      Dim rs As ADODB.Recordset  ’--定义Recordset对象
      Dim sList() As String    '--定义数组      
      
      sSQL = "select WarehouseId from paraDBWarehouseId "     
      Set rs = K3Conn.Execute(sWarehouseIdSQL)
               
      While Not rs.EOF
           ReDim Preserve  sList(0 To J) As String '--重定义数组大小
           sList(J) = rs("name")           '--name 为表中的字段名
           J = J + 1
           rs .MoveNext
     Wend
    
      For c = 0 To UBound(sList)
           print sList(c)          
      Next c
    

    二:笔记:

    1. dim是声明私有变量的意思,另外还有公有变量和保护型变量,分别是public和private.
    2. ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private、Public 或 Dim 语句声明过的动态数组的大小。
    3. EOF:指当前记录位置位于Recordset对象的最后一个记录之后。
    4. UBound 函数返回数组中指定数组维的最大下标值。
    展开全文
  • VBA开发时经常用到数组,但是如何判断数组是否为空,这里说的“空”指的是,动态数组声明后,但是未赋值之前的状态,在【本地窗口】显示如下。 此时Dim语句已经执行完毕,可以认为已经完成了初始化,数组并无法...
  • VB.Net关于数组赋值

    千次阅读 2014-05-07 04:56:29
    正在VB.Net增加了一个修饰Shared。Shared 要害字指示一个或多个被声明的编程元素将被共享。要点是:共享元素不关联于某类或结构的特定实例。需要通过运用类名或结构名称或者类或结构的特定实例的变量名称限定共享...
  • 我们都知道在所有程序设计语言中数组都是一个非常重要的概念,数组的作用是允许程序员...本文主要介绍VB.NET数组的使用,希望对大家的使用带来帮助。 数组中的第一个元素的下标称为下界,最后一个元素的下标称为上界,
  • VB中数组

    千次阅读 2011-09-16 09:26:39
    5.1 数组的概念 1.引例  求100个学生的平均成绩及超过平均成绩的人数。  如果用一般变量来表示成绩,需要用100个变量,如:mark1、mary2、……mark100。若用数组,可以只用一个来表示mark(1  To ...
  • 声明固定大小的数组 有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围: 建立公用数组,在模块的声明段用 Public 语句声明数组。 建立模块级数组,在模块的声明段用 Private 语句声明数组。 ...
  • VB6.0中数组的定义实测

    万次阅读 2014-07-25 10:31:18
    作者:iamlasong 1、环境 Visual Basic 6.0精简版,因为只做一些小工具,觉得这个已经够了。我觉得,编程语言、数据库...2、数组定义发现的问题 定义数组   Dim a(n) as type  A 是一个 type 型的数组,这个
  • vb中数组的初始化

    千次阅读 2014-10-24 01:37:36
    vb中数组的初始化问题:计划使用数组存储以下值:"零分,班序,年名,序,组名,级名,总分3,总分5,总分9,总序,语序,数序,英序,物序,化序,政序,历序,地序,生序"方法:在vb中数组初始化比较麻烦1.标准做法:dimfield(19)as...
  • 作者:iamlasong 1、环境 Visual Basic 6.0精简版,由于仅仅做一些小工具,认为这个已经够了。我认为。...2、数组定义发现的问题 1)网上关于限定大小的数组定义:Dim a(n) as type ...
  • vb.net 数组动态定义

    2012-04-16 17:01:23
    可以在同一声明语句中调整多个数组变量的大小,同时为每个变量指定 name 和 boundlist 部分。 以逗号分隔多个变量。 数组界限。 boundlist 中的各个条目可指定该维度的下限和上限。 无论您是否指定...
  • vb.net 数组定义详解

    千次阅读 2017-08-10 16:53:13
    数组(Arrays),可以用相同名字引用一系列变量,并用数字(索引)来识别它们,在许多场合,使用数组可以...在vb.net,所有的数组都是以“0”为起始长度的,这与vb 6.0完全不一样,在vb 6.0,如果写下以下语句
  • VB讲课笔记08:数组

    千次阅读 2018-03-12 18:01:30
    VB讲课笔记08:数组学习目标:理解数组的概念、掌握数组声明、引用方法,掌握数组的使用以及与数组有关的常用算法;了解控件数组的概念、声明和使用。一、数组概念(一)数组定义数组是高级程序设计语言数据组织...
  • VB中动态数组是最灵活、最方便的一种数组。利用动态数组还有助于有效管理内存,因为动态数组是使用时才开辟内存空间,在不使用这个数组时,还可以将内存空间释放给系统。这样就可以最大限度地节省内存,提高运行...
  • 参照教材例5.3,在通用声明声明两个数组,利用随机函数形成两个4x4矩阵。 要求: ① 以下三角形式显示A数组、上三角形式显示B数组。 ② 求A数组主对角线元素之和和B数组副对角线元素之和。 参考代码 ...
  • VB.NET有很多值得学习的地方,这里我们主要介绍VB.NET申明数组,包括介绍申明、初始化数组和访问数组中的元素等方面。 数组是程序经常要使用到的一种数据类型,VB.NET数组,虽然语法结构等方面保留了和VB的很...
  • VB中的变量和数组

    千次阅读 2011-01-12 18:54:00
    <br />vb中的变量:Boolean(2)/Byte(1)/Integer(%2)/ Long(&4)/Single(!4)精度不够/Double(#8)精度高/ String($长度可变)/Date(8#...#)/Currency(@8现金)/ Object(对象)/Variant(可变不声明变量) 类型...
  • 在向大家详细介绍VB.NET重新申明数组之前,首先让大家了解下VB.NET使用ReDim语句要注意的几点,然后全面介绍VB.NET重新申明数组VB.NET重新申明数组VB.NET重新申明数组VB中基本类似,依然使...
  • VB数组详解

    2019-09-27 20:33:05
    一、数组的概念数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。一般...
  • VB数组总结

    2019-07-13 16:38:08
    数组声明声明包括以下信息:数组名,维数...数组语句:public , private,Redim 一共有六种数组分别是:固定数组、动态数组、字符串数组、可变数组、记录数组、控件数组, 这六种数组有什么区别? 答:1、固定:...
  • VB.NET,对于数组的操作方法多种多样,开发人员可以在实际编程,根据自己不同的需求来操作数组。而且数组还能分为一维数组和多维数组等。我们在这里就为大家介绍一下VB.NET多维数组的相关概念。 VB.NET多维...

空空如也

空空如也

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

vb中声明动态数组的语句