VB:这些不同形式的变量声明语句意义一样的吗?
大家好:
请问以下的不同形式的变量声明语句功能和意义是一样的吗?如果不是,又有什么不同?
dim(或static或private或Public)a,b,c as integer
和
dim(或static或private或Public) a as integer
dim(或static或private或Public) b as integer
dim(或static或private或Public) c as integer
是一样的吗?
---------
还有,defsng a这句语句定义的变量a是不是单精度型啊?
defsng a和 dim(static|private|Public) a as integer有什么不同?
原来定义单精度变量还有这么简单的形式啊?
请问还有其它的数据类型变量像这样简单的定义形式吗?可以告诉我吗?
----
谢谢各位的赐教!
问题点数:0、回复次数:7Top
1 楼ttcat(一颗流星)回复于 2004-09-01 17:01:50 得分 0
dim(或static或private或Public)a,b,c as integer
这是vb.net中的声明方法,在vb6中是不允许的。
实际上一回事。Top
2 楼ttcat(一颗流星)回复于 2004-09-01 17:04:52 得分 0
vb.net中定义的都很简单,vb 6.0中则要复杂很多阿。Top
3 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2004-09-01 17:11:16 得分 0
static静态变量 只能给1次值,一般用在常数上
private私有变量 在本窗体或者类中可以调用,其他类或窗体不能调用
Public公有变量(默认) 声明在模块中就是程序的全局变量
dim a,b,c as integer
和
dim a as integer
dim b as integer
dim c as integer
是一样的吗?
不一样,因为上面的a和b没有声明类型,因此系统会默认a,b是变体型
如果想一样就这样写
dim a as integer,b as integer,c as integer
Top
4 楼ldxm8848(*梦幻女孩*)回复于 2004-09-03 22:20:15 得分 0
谢谢各位大侠赐教!Top
5 楼renjunjun(飞黄)回复于 2004-09-03 22:28:58 得分 0
不一样,在VB6中dim a,b,c as integer的定义方式下,只有C是整型,其它的A,B被定义为默认的Variant型.Top
6 楼difa(中原)回复于 2004-09-03 22:31:53 得分 0
同意zyg0(),upTop
7 楼BlueBeer(1win)回复于 2004-09-04 03:19:17 得分 0
//static静态变量 只能给1次值,一般用在常数上
这个好像有误吧
用static定义的变量跟用dim定义的基本相同,主要的区别有两个,一个是static只能用于定义过程级别的变量,二个是static变量的生存期不随所在过程的结束而终结,它的生存期将延续到程序退出的一刻,也就是说直到退出程序,static变量才会被销毁(放弃其内存占用)
说的不太清楚,呵呵,看个小例子吧
sub command1_click()
dim test as long
test=test+1
msgbox test
end sub
放个commandbutton在窗体上
从dim一句开始看,这一句定义了一个长整型变量test,在给它赋值前,它的值为0
下一句给test赋值test+1,也就是0+1
再下一句用消息框显示test的值
按F5运行,按command1并且不管你按多少次,消息框都永远只显示1(即0+1),为什么,因为每一次执行到end sub时,变量test就被销毁了,再按一次,dim语句都将定义一个全新的变量,每一次的test虽然同在一个过程,也拥有完全相同的变量名,但从严格意义上讲,它们已经不是同一个变量了
同一段代码,你把上面的dim换成static再运行试一试,每按一次command1,消息框显示的test的值都累加1,这是因为static定义的变量只在第一次被执行时分配给变量内存空间,它的内存地址在程序退出前都不会被改变(dim语句定义的有可能会改变),哪怕它所在的窗体已经被unload,所以说它的生存期与程序的生存期相同,而不像dim变量生存期只在过程内部,过程执行结束,变量也将不再生存
另外,需要注意的是,虽然static变量的生存期看起来很像public变量,但它们是有本质区别的,public是名符其实的公用变量,而static变量仍然是私有的,它只属于所在的过程,在过程外部是无法访问它的Top




