dim和redim什么区别

dim和redim什么区别

1、功能不同:

DimDim语句声明变量,Dim 语句提供了变量名,ReDim 为数组变量重新分配存储空间。例如:有一个Byte数组A,如果知道数组上限最大只能是4,就用Dim,Dim A As Byte(4)。但如果不能事先确定它的大小,或者需要在运行时改变它的大小就要用动态数组Dim A As Byte() ,ReDim A(4) 。

2、使用场景不同:

仅可以在过程级使用 ReDim。这意味着,变量的“声明上下文”必须是过程,而不能是源文件、命名空间、接口、类、结构、模块或块。由于 Dim 语句中的可选的 As type 子句,可以定义被声明变量的数据类型或对象类型。变量也可以包含来自 Visual Basic 或其它应用程序的对象。

3、运行时改编数组大小的能力不同:

redim可以在在运行时改变它的大小,如果代码确定某个数组需要更多元素,ReDim 也可以添加。不能事先确定数组的大小,或者需要在运行时改变数组的大小就要用Redim动态数组。

参考资料来源:百度百科-VB变量

参考资料来源:百度百科-REDIM

温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-07-31
dim 为定义一个变量
redim为重新定义这个变量,redim一般用于对数组的重新定义。重新定义后会丢失所有数据

ReDim 语句
在过程级中声明动态数组变量并分配或重新分配存储空间。

ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .
参数
Preserve
当更改现有数组最后一维的大小时保留数据。
varname
变量名,遵循标准变量命名规则。
subscripts
数组变量的维数,最多可以声明 60 维数组。subscripts 参数语法格式如下:
upper [,upper] . . .

数组的下界总是零。

说明
ReDim 语句通常用于指定或修改动态数组的大小,这些数组已用带有空括号的 Private、Public 或 Dim 语句(没有维数下标)正式声明过。可以重复使用 ReDim 语句更改数组维数和元素数目。

如果使用了 Preserve 关键字,就只能调整数组最后维的大小,并且不能改变数组的维数。例如,如果数组只有一维,就可以修改该数组的大小,因为该维是最后的也是仅有的一维。但是,如果数组有两个或更多维,就只能改变末维的大小并保留数组内容。

这个例子说明如何不擦掉该数组中存在的数据,而增加动态数组的终止维数。

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
警告 如果减小数组的大小,则将丢失被排除的元素中的数据。
变量初始化时,数值变量初始化为 0,字符串变量初始化为零长度字符串 ("")。在使用引用对象的变量前,必须使用 Set 语句将某个现有对象赋予该变量。在进行对象赋值以前,已声明的对象变量有特定值 Nothing。
第2个回答  推荐于2017-09-09
dim 为定义一个变量
redim为重新定义这个变量,redim一般用于对数组的重新定义。重新定义后会丢失所有数据

ReDim 语句
在过程级中声明动态数组变量并分配或重新分配存储空间。

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

发现Dim语句时,则自动根据语句中的指定生成一个或几个新变量,即在内存中保留一些空间并为其取名,生成占位符本回答被提问者采纳
第3个回答  2007-07-31
ReDim 为数组变量重新分配存储空间。可选项修饰符 Preserve 当仅更改最后一个维度的大小时,用来保留现有数组中的数据。
使用 ReDim 语句来更改某个已声明数组的一个或多个维度的大小。如果有一个较大的数组,并且您不再需要它的某些元素,ReDim 可通过减小数组大小来释放内存。另一方面,如果代码确定某个数组需要更多元素,ReDim 也可以添加它们。
ReDim 语句仅适用于数组。它在标量(只包含单一值的变量)、集合或结构上是无效的。
仅可以在过程级使用 ReDim。这意味着,变量的“声明上下文”必须是过程,而不能是源文件、命名空间、接口、类、结构、模块或块。
例如:
有一个Byte数组A,如果我们知道这个数组上限最大只能是4,就用Dim
Dim A As Byte(4)
但如果我们不能事先确定它的大小,或者需要在运行时改变它的大小就要用动态数组
Dim A As Byte()
ReDim A(4)'这样改变大小时会清空原来的数据
ReDim Preserve A(4)'这样改变大小时会保留原来的数据
相似回答