7,763
社区成员
反反复复自学了几遍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)