普通变量与对象变量的区别是什么?

xuzhe1111 2003-01-10 10:32:43
再有,就是怎样分辨,怎样使用,谢谢
...全文
128 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
programart_life 2003-01-11
控件对象是指VB里面的OCX对象
而“对象”的含义更加广泛。在.NET Framework里,甚至包括任何东西,数据类型、运算符等等,都是对象。
回复
树莓派 2003-01-11
后面一种,我们叫他 延迟绑定!
回复
xuzhe1111 2003-01-11
谢谢,书上还说object声明的变量可以引用任何一种类型的对象,control声明的变量可以引用所有的控件对象,在这里,“对象”和“控件对象”有何不同?
回复
zyl910 2003-01-11
Object型的数据是一个32位指针
VB对对象的访问方式是计数访问

比如:
Dim a as New Object '创建一个Object,并使a指向它,计数为1
Dim b as Object '创建一个Object变量b(值为Nothing)
Set b=a '使b指向 a指向的那个Object,计数+1(2)。(这是会使b以前指向的对象对象计数-1。但b以前是Nothing,不做处理)
Set a=Nothing '使a不指向任何Object,原来指向的对象计数-1(1)
Set b=Nothing '使b不指向任何Object,原来指向的对象计数-1(0),所以对象卸载
回复
programart_life 2003-01-10
一般情况下是不用这么作。但是例如你定义了一个窗体,而这个窗体,你想在很多地方同时显示。就如下

(假设已经有了一个名为Form1的实例)

dim m as form,n as form,o as form
set m=new Form1
set n=new form1
set o=new form1

m.show
n.show
o.show
就可以同时有四个(包括原来那个)完全一样窗体显示出来。

对象类型更多的时候是用在其他非组件类的使用上。
如ADODB、stdFont、stdPicture、stdColor、Recordset、自定义类等等
看ADODB.Connection的声明
Dim Cnn as new adodb.connection
这就创建了adodb.connection的一个实例。
回复
xuzhe1111 2003-01-10
谢谢,我问的正是这个。那么再问一下:
第一种:Private Sub Command1_Click()
STATIC int1 as commandbutton
set int1=cmd1
int1.caption="11111"

第二种:Private Sub Command1_Click()
cmd1.caption="11111"
效果是不是一样,我经过实验,是一样的,那么第一种存在的意义是什么,用变量岂不是很麻烦吗?
回复
programart_life 2003-01-10
没明白你的意思,你是说普通变量和数据类型为对象的变量吗?
本质上没有区别。普通变量是在内存开出一块存储区域。对于不同类型的变量,这个区域的大小有区别。
而对象类型的,也是要在内存区有一个存储的地方。通常我们在使用对象时,是用它的句柄,该句柄是一个长整形的变量。

普通形的数据,如Integer,Long,char等等,在对他们进行操作的时候,我们是直接对存储地址的内容进行操作。除非你使用了引用和指针。而对象类型的则只能使用他们的引用或指针(即你得到的那个长整形的句柄)。

但是,Integer,Long等数据类型在.Net开发系列里,也已经变成对象了。他们除了标识一种数据类型之外,也有自己的方法与属性。

MSDN里和许多C/C++的书籍里,对此有非常详尽的叙述,你去看看那个吧
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告