[学习记录]VB 数组的应用

颜采川 2022-05-10 14:53:45

反反复复自学了几遍VB,感觉都会了,准备写个东西,结果发现,基本概念都记不清楚。

这里记录下自己犯下的错误,备忘。

定义数组的几种方法:

1.

Dim Waiters () As String = {"Ben","Sue","Lee","Kim","Pat"}

这是一个一维数组,类型是String,而其大小是根据后面的值自动给定的

2.

Dim Investments() = {500,600,700,23.5,188.9}

这也是一个一维数组,类型因为没有定义,根据元素自动采用Object,大小根据后面元素个数自动定义了

3.

Dim Rectangle = {{10,20},{50,60},{23,15}}

这样定义了一个多维数组3行,2列;则Rectangle(0,0) 为10,Rectangle(0,1)为20;

4.但是如果这样定义:

Dim arr1() = {{1, 2, 3}, {7, 2, 3}, {0, 2, 1}}

就是错误的,因为前面的声明是一维数组,后面是3维,所以不一致了,但是如果按照下面写

Dim arr1() = {({1, 2, 3}), ({7, 2, 3}), ({0, 2, 1})}

就又可以了,因为加了括号,成了一维数组,于是arr1(0)为{1,2,3},arr1(0)(0)为1,arr1(0)(1)为2

5.如果这样做

        Dim arr1() As Single
        arr1(1) = 30

就会提示错误,因为没有给arr1()整体赋值,但是只要如下赋值了,则可以去改变它

        Dim arr1() As Single = {0, 0, 0}
        arr1(1) = 30
        arr1(0) = 10

如上就不会出错,而且最后,arr1就变成了{10,30,0}

6.如果要增加上面arr1数组的容量,并清掉原来数据,变为{0,0,0,0},就需要用Redim

        Dim arr1() As Single = {0, 0, 0}
        arr1(1) = 30
        arr1(0) = 10
        ReDim arr1(3)

7.但是如果要保留原来的数据只是末尾增加容量,就需要用Redim Preserve 

        Dim arr1() As Single = {0, 0, 0}
        arr1(1) = 30
        arr1(0) = 10
        ReDim Preserve arr1(3)

则运行上面代码后,arr1最后为{10,30,0,0}

8.

        Dim arr1(,,) As Single
        Txtnote.Text = arr1(0, 0, 0) & arr1(0, 1, 0)

如果运行上面代码,则会提示没有给arr1赋值,问题和前面的5是一样的,代码只是构建了一个三维数组,但没有赋值,连0值都没有的。但是如果此时这样赋值

        Dim arr1(,,) As Single
        arr1(0, 0, 0) = 23

则又犯了前面5的错误,因为没有赋值更不可能改,此时可以这样操作

        Dim arr1(,,) As Single
        ReDim arr1(25, 25, 25)
        arr1(10, 1, 1) = 150

用Redim确认一下数组的容量,然后赋值,其实Redim有两个作用,一个是更改了数组容量,一个是添加的0内容。

9.Redim 必须配合Dim一起用

10如果要改变多维数组内容并保持之前内容,则可以用Redim Preserve,但只能更改最后维的数组的大小,比如前面的arr1(25,25,25),就只能Redim第三维,如下第三维被从25扩展到50

Dim arr1(,,) As Single
Redim arr1(25,25,25) 
arr1(10,1,1)=150
Redim Preserve arr1(25,25,50)

 

...全文
180 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧