首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

95分,请教DIM a AS 类1 和 dim a as new 类1 的区别

2012-12-17 
95分,请问DIM a AS 类1 和 dim a as new 类1的区别请问DIM a AS 类1 和 dim a as new 类1的区别还有这两种

95分,请问DIM a AS 类1 和 dim a as new 类1 的区别
请问DIM a AS 类1 和 dim a as new 类1  的区别
还有这两种形式定义的变量如何释放。

[最优解释]
DIM a AS 类1
   这只是定义一个类的变量,这种时候,这个变量其实相当与一个指针,而指针地址中的类并没有实例化,也可以理解为没有载入堆栈,只是一个空的地址指针。不过这个地址指针可以随意的设置成别的地址。
比如:
Dim a As 类1
Dim UU As New 类1
Set a = UU


dim a as new 类1
    这种方法其实可以拆开来看如:
Dim a As 类1
Set a = new 类1

Dim a As 类1  的意思我们知道了,是定义一个变脸,并且变量内容是指向一个类的指针,但因为这个类型没有实际的分配出内存并载入堆栈,所以这个时候这个变量是无用的,只是个指向空地址无用变量。
而 new 类1 就是将这个类创建一个新实例的过程,并将这个创建好的新实例地址赋值给 a 这个变量。也可以理解为在内存中划分了一块符合这个类所需要的内存区域,并将相关过程载入到该内存中,并将这个内存地址载入堆栈共CPU执行。而这块分配好的地址句柄便是这个类的实例句柄。也就是 a 这个类指针真正存储的东西。

当调用变量的属性、方法或事件时,其实就是CPU根据代码寄存器再内部跳转执行编译位置代码,每一个实例有一个独立的内存块,即使结构一直,但内容不同,这就是类和类实例化的关系。
在VB中理解,就是
Dim a As 类1       '是定义类变量
Set a = new 类1    '是初始化类变量(加上“实例”更为贴切)
Dim a As New 类1  '是定义类变量同时初始化类变量
因为类必须初始化,如果没有初始化的类是不能用的。
即使有些类或对象不是经由你的代码初始化,也是系统或别的程序帮你初始化了才能用,如 me、app、Form1...

至于类的释放,就是上面所说的
set a= nothing
在VB中,当这样设置类时,类中会产生 Terminate 事件,类里会释放一些有关资源,直至最后还会将为 a 变量分配的内存也释放掉。
[其他解释]
1, DIM a AS 类1 ,还有用set a = new 类1,来建立
dim a as new 类1,可以直接使用,
2, set a = nothing
[其他解释]
前者是声明
后者不仅声明了,还实例化了该对象。
VB中释放对象都是使用Set XX=Nothing
[其他解释]

引用:
前者是声明
后者不仅声明了,还实例化了该对象。
VB中释放对象都是使用Set XX=Nothing

+1
[其他解释]
引用:
前者是声明
后者不仅声明了,还实例化了该对象。
VB中释放对象都是使用Set XX=Nothing

+1


[其他解释]
引用:
前者是声明
后者不仅声明了,还实例化了该对象。
VB中释放对象都是使用Set XX=Nothing

+1

[其他解释]
DIM a AS 类1 '声明a是这个类1对象,但是类1必须通过 set a=new 类1创建,否则为nothing 
dim a as new 类1 ' 声明一个类1对象,但不需要显示创建对象,会自动创建
当后续代码第一次调用 a.方法或a.属性时,系统会自动创建
[其他解释]
对象变量或 With 块变量没有设置(错误 91)
   

创建对象变量有两个步骤。第一,必须先声明对象变量。然后必须用 Set 语句将一个正确的引用赋值给对象变量。同样地,With...End With 块必须先用 With 语句进入点来执行初始化。此错误有以下的原因和解决方法: 

试图使用的对象变量,还没有用一个正确对象的引用来赋值。 
给对象变量指定或再指定一个引用。例如,如果在下列的代码中省略 Set 语句的话,那么引用 MyObject 将会产生错误:

Dim MyObject As Object    ' 创建对象变量。
Set MyObject = Sheets(1)    ' 创建一个正确的对象引用。
MyCount = MyObject.Count    ' 计数值赋给 MyCount。

试图用的对象变量已经被设为 Nothing。 
Set MyObject = Nothing    ' 释放此对象。
MyCount = MyObject.Count    ' 引用了已释放的对象。



再指定引用给对象变量。例如,使用新的 Set 语句给对象设置新的引用。

此对象是正确的对象,但没有被设置,因为在对象库中,在 “引用” 对话框中没有被选取。 
在 “添加引用” 对话框选择对象库。

热点排行